2013-07-16 48 views
1

我試圖在AppHarbor上獲得Handlebars預編譯工作。我們遵循here的說明,該說明適用於除AppHarbor之外的所有構建機器。以下是錯誤日誌:手柄編譯操作不允許

CompileHandlebarsTemplates: 
    Compiling Handlebars template files 
    Executing handlebars --output "templates.js" --min "D:\temp\iglbataj.o25\input\comp-prod-5d066abce08570e82575d1a1c877bd5c94d27b1c\WebApp\Templates" 
    node "D:\temp\iglbataj.o25\input\comp-prod-5d066abce08570e82575d1a1c877bd5c94d27b1c\WebApp\Build\npm\node_modules\handlebars\bin\handlebars" --output "templates.js" --min "D:\temp\iglbataj.o25\input\comp-prod-5d066abce08570e82575d1a1c877bd5c94d27b1c\WebApp\Templates" 

    fs.js:679 
     return binding.lstat(pathModule._makeLong(path)); 
        ^
5>EXEC : error : EPERM, operation not permitted 'D:\temp' [D:\temp\iglbataj.o25\input\comp-prod-5d066abce08570e82575d1a1c877bd5c94d27b1c\WebApp\WebApp.csproj] 
     at Object.fs.lstatSync (fs.js:679:18) 
     at Object.realpathSync (fs.js:1265:21) 
     at tryFile (module.js:142:15) 
     at Function.Module._findPath (module.js:181:18) 
     at Function.Module._resolveFilename (module.js:336:25) 
     at Function.Module._load (module.js:280:25) 
     at Function.Module.runMain (module.js:497:10) 
     at startup (node.js:119:16) 
     at node.js:901:3 

我們檢查了node.js句柄模塊。嘗試使用安裝在AppHarbor上的node.exe來調用它,以及檢查node.exe的x64和x86版本。它們都不起作用。試圖在本地複製真正長的路徑,以查看問題是否仍然在本地生成長路徑。即使嘗試輸出到默認輸出而不是文件無濟於事。在這一點上,我堅持在這個問題上。請幫忙。

回答

1

這是一個權限問題。

可能是您的節點進程沒有正確的權限來讀取文件或寫入目標文件夾。

你可以強制它與sudo,但這並不是一個真正的解決方案。因此請檢查權限並確保節點進程可以訪問相關目錄/文件的寫入和讀取。

您可以通過google chmodchown瞭解如何更改權限的說明。 (如果系統架構沒有更多詳細信息,我無法進一步幫助你)

+0

AppHarbor在Windows上運行。它似乎沒有讀或寫權限,因爲在我的構建過程中,我可以讀取和寫入沒有nodejs的路徑。我也嘗試過運行'node handlebars'而不給任何參數,這樣它只顯示幫助,但我仍然得到相同的錯誤。把手模塊已簽入並且路徑正確,否則我會得到'找不到模塊' – orad

+1

對不起,我通過提供Unix命令而忽略了它。儘管使用Windows並不意味着您的權限不會有錯誤配置(這仍然是您的問題)。在使用IIS或Azure時,權限問題尤其突出。因此,請確保與您的構建過程相關聯的用戶具有對目標目錄的寫入權限。 –

+0

我的問題看起來像[這裏]提到的(https://github.com/joyent/node/issues/3977),但我沒有任何符號鏈接。 – orad