2015-09-05 69 views
2

所以,最近我一直在玩DocPad;我已經通過教程,並已安裝並正常工作,除了...docpad運行錯誤undefined .docpad.cson

爲了看到DocPad如何與一個更大的網站工作的興趣,我從github中獲取了Jason Young的代碼(http://ytechie.com)爲什麼這個網站?這是我第一次聽說DocPad的地方)。根據指示,我執行了npm install(沒有問題);然後docpad run。它返回與此錯誤:

C:\Users\harnerd\Documents\GitHub\ytechie-docpad>docpad run 
error: undefined 'C:\\Users\\harnerd\\.docpad.cson' 
error: null 
error: null 
TypeError: undefined is not a function 
    at Object.exports.eval (C:\Users\harnerd\Documents\GitHub\ytechie- docpad\node_modules\coffee-script\lib\coffee-script\coffee-script.js:120:47) 
at Object.CSON.parseSync (C:\Users\harnerd\Documents\GitHub\ytechie-docpad\node_modules\docpad\node_modules\cson\out\lib\cson.js:90:34) 
at null._onTimeout (C:\Users\harnerd\Documents\GitHub\ytechie-docpad\node_modules\docpad\node_modules\cson\out\lib\cson.js:70:24) 
at Timer.listOnTimeout (timers.js:119:15) 
info: null 

由於我是新來DocPad,有可能是一些簡單而明顯的我失蹤,但我不知道是什麼。我必須承認,DocPad在出現問題時有點難以理解。在我看來,它抱怨它無法找到.docpad.cson文件,但它確實存在於錯誤消息中引用的位置。

我完全誤解了這個錯誤的含義,或者是什麼?我在Windows 7上運行的node.js v0.12.7和docpad v6.54.2

編輯:這裏是我的.docpad.cson文件的內容:

name: "MAC 6a85329428c35b394e921ec0cb3298eed2a1b707" 
email: null 
username: "6a85329428c35b394e921ec0cb3298eed2a1b707" 
subscribed: false 
subscribeTryAgain: null 
tos: true 
identified: true 

沒有什麼神奇的在這裏。在balupton的建議中,我通過咖啡腳本「Try CoffeeScript」編譯器運行它,但毫不奇怪它只是產生了一些JSON。

編輯2:嘗試本傑明在他的評論中的建議,我跑npm install -g docpad,成功運行。然後我跑docpad update --global內的項目以及與此得到了回報:

C:\Users\harnerd\Documents\GitHub\ytechie-docpad>docpad update --global 
info: Welcome to DocPad v6.78.3 (global installation:  C:\Users\harnerd\AppData\Roaming\npm\node_modules\docpad) 
notice: If everyone who saw this message donated $1/week, maintaining DocPad would become sustainable: http://docpad.org/donate 
info: Contribute: http://docpad.org/docs/contribute 
info: Plugins: cleanurls, coffeescript, dateurls, eco, less, livereload, marked, paged, partials, sitemap, tagging 
info: Environment: development 
info: Cleaning files 
info: Cleaned files 
\ 
> [email protected] preinstall C:\Users\harnerd\Documents\GitHub\ytechie- docpad\node_modules\docpad-plugin- sitemap\node_modules\extendr\node_modules\typechecker 

> node ./cyclic.js 

npm ERR! Windows_NT 6.1.7601 
npm ERR! argv "C:\\Program Files (x86)\\nodejs\\\\node.exe" "C:\\Program Files (x86)\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "[email protected]" "docpad-p 
[email protected]" "[email protected]" "[email protected]" "docpad-plugin- [email protected]" "[email protected]" "[email protected]" "--save" 
npm ERR! node v0.12.7 
npm ERR! npm v2.11.3 
npm ERR! path C:\Users\harnerd\Documents\GitHub\ytechie- docpad\node_modules\docpad-plugin-partials 
npm ERR! code EPERM 
npm ERR! errno -4048 

npm ERR! Error: EPERM, lstat 'C:\Users\harnerd\Documents\GitHub\ytechie- docpad\node_modules\docpad-plugin-partials' 
npm ERR!  at Error (native) 
npm ERR! { [Error: EPERM, lstat 'C:\Users\harnerd\Documents\GitHub\ytechie- docpad\node_modules\docpad-plugin-partials'] 
npm ERR! errno: -4048, 
npm ERR! code: 'EPERM', 
npm ERR! path: 'C:\\Users\\harnerd\\Documents\\GitHub\\ytechie- docpad\\node_modules\\docpad-plugin-partials' } 
npm ERR! 
npm ERR! Please try running this command again as root/Administrator. 

npm ERR! Please include the following file with any support request: 
npm ERR!  C:\Users\harnerd\Documents\GitHub\ytechie-docpad\npm-debug.log 
error: The action completed successfully 
error: An error occured: 

Error: Command exited with a non-zero status code. 
    at Object.safeps.prepareExecutableResult (C:\Users\harnerd\AppData\Roaming\npm\node_modules\docpad\node_modules\safeps\ou t\lib\safeps.js:190:24) 
    at ChildProcess.<anonymous> (C:\Users\harnerd\AppData\Roaming\npm\node_modules\docpad\node_modules\safeps\ou t\lib\safeps.js:322:29) 
    at ChildProcess.emit (events.js:110:17) 
    at maybeClose (child_process.js:1015:16) 
    at Process.ChildProcess._handle.onexit (child_process.js:1087:5) 

To report the above, follow the guide at: http://docpad.org/bug-report 
Error: Command exited with a non-zero status code. 
    at Object.safeps.prepareExecutableResult (C:\Users\harnerd\AppData\Roaming\npm\node_modules\docpad\node_modules\safeps\ou t\lib\safeps.js:190:24) 
    at ChildProcess.<anonymous> (C:\Users\harnerd\AppData\Roaming\npm\node_modules\docpad\node_modules\safeps\ou t\lib\safeps.js:322:29) 
    at ChildProcess.emit (events.js:110:17) 
    at maybeClose (child_process.js:1015:16) 
    at Process.ChildProcess._handle.onexit (child_process.js:1087:5) 

C:\Users\harnerd\Documents\GitHub\ytechie-docpad> 

儘管故宮的說法,我是管理員身份運行;然而,真正的問題不是npm沒有docpad-plugin-partials文件夾的權限 - 它根本找不到它,因爲它已被刪除。

當我最初運行的項目npm install中的package.json中列出的所有依賴於node_modules文件夾中創建,但後來當我跑docpad update --global去除docpad-插件 - 諧音文件夾。

要查看我是否可以重複此行爲,我爲該網站抓取了原始代碼兩次。每次運行npm install(沒有問題 - 所有依賴關係在node_modules中都有自己的文件夾),然後docpad run(遇到與.docpad.cson文件相同的問題),最後是docpad update --global。相關文件夾已從node_modules文件夾中刪除,但從未使用相同的文件夾。

編輯3:傳奇繼續。儘管沒有任何改變,但執行docpad update --global時文件丟失並保持丟失的奇怪問題消失了,我又回到了原始問題(error: undefined 'C:\\Users\\harnerd\\.docpad.cson)。不知道我當地環境中的某些東西是否被盜,或者我抓住了哪些東西是錯誤的。我懷疑它是後者。

+0

正如我所提到的,我是DocPad的新手,但如果有人拿着槍對我的頭,並讓我猜這個問題的答案,我會說我有一個預感,它與版本有關最初用於構建ytechie站點的組件與我現在在系統上使用的組件之間的差異。但那可能是一個完全的紅鯡魚。 – Dan

+0

感謝您用更多細節更新問題 - 看起來您的假設是正確的 - 如果您運行'npm install -g docpad'來獲取全局安裝的最新docpad版本,然後在項目內部運行'docpad update --global'來更新它是最新的docpad依賴關係,然後運行'docpad run'重試,會發生什麼? – balupton

+0

最新的更新很有趣,不確定可能會導致這些權限問題,無論是環境問題,還是docpad問題。爲了找到答案,讓我們試試這個。失敗的命令是當'docpad update --global'執行這個命令時:'npm install --save docpad @ 6 docpad-plugin-marked @ 2 docpad-plugin-eco @ 2 docpad-plugin-less @ 2 docpad-plugin如果你刪除了node_modules目錄,然後運行'npm install',然後直接運行該命令,然後運行'docpad run',它是否工作,你可以使用'partial @ docpad-plugin-coffeescript @ 2 docpad-plugin-sitemap @ 2'。 – balupton

回答

0

似乎有解析該文件的問題,因爲undefined is not a function發生在CSON的eval語句中。不幸的是,似乎這個錯誤發生在語言環境文件加載之前,這將解釋日誌中缺乏好信息,這將是一個單獨的錯誤(提交報告here)。

C:\\Users\\harnerd\\.docpad.cson內部是否有函數調用,或者CoffeeScript可能會將函數解釋爲某種不正確的格式?也許運行http://coffeescript.org「Try CoffeeScript」編譯器檢查會有幫助嗎?否則,由於該文件可能包含敏感的令牌,您可以通過電子郵件將其發送至[email protected],我會看一看。