1

我正在開發一個需要我使用gcloud nodejs模塊的項目。我正在使用node app在本地測試此項目,並使用gcloud preview app run app.yaml在gcloud上進行本地測試。 當我在我的文件中有以下代碼時,該項目將運行node app,但不會使用gcloud使用gcloud preview app run app.yaml運行 - 我得到一個invalid ELF Header錯誤。NodeJs Google計算引擎使用'gcloud'模塊時無效ELF標題

var gcloud = require('gcloud'); 

我相信該項目不會運行gcloud命令,因爲它與我在我的項目中使用gcloud模塊有關。如果我從我的文件中刪除該代碼,該項目使用gcloud命令運行得很好。我應該怎麼做才能解決這個問題?

我能夠通過使用一個try-catch得到錯誤

try { 
    var gcloud = require('gcloud'); 

} catch (e) { 
    e = 'Error loading required classes for gcloud: '+gcloud+ ': '+e 
    console.log(e) 
    res.status(200).send(e); 
} 

的錯誤:

Error loading required classes for gcloud: undefined: Error: 
/app/node_modules/gcloud/node_modules/hash-stream- 
validation/node_modules/sse4_crc32/build/Release/sse4_crc32.node: invalid ELF header 
+0

你能詳細說明它失敗的方式嗎?這聽起來像部署成功,但應用程序本身返回500秒...如果是這樣的話,請包括來自開發者控制檯的應用程序引擎日誌條目以用於失敗的HTTP請求。 – David

+0

我現在正在使用'run'(gcloud預覽應用程序運行app.yaml)命令在本地模擬它,我沒有部署它,因爲如果它不在本地使用'run'命令運行,它將無法在線工作。如果我在取消註釋gcloud代碼時進入localhost:8080,它將不會加載任何內容,只會給我超時錯誤,但如果我取消註釋gcloud代碼,那麼我的工作原理完全正常。 – DynamoBooster

+0

即使我只是var gcloud = require('gcloud')它不起作用 – DynamoBooster

回答

2

我能夠通過刪除node_modules目錄,然後部署到解決這個問題項目。這個問題與OS X編譯的庫不能在Linux機器上工作有關。因此它需要在Linux機器上進行全新安裝 - 直接刪除node_modules將直接強制它在Linux機器上全新安裝。

+0

也許我可以花幾個小時來解決這個問題......謝謝! – scaryguy

相關問題