2015-09-20 67 views
0

我有一個Node.js應用程序,它可以在本地主機上正常運行,但不在計算引擎虛擬機中運行。這裏是一個片段:無法在Google Compute Engine虛擬機中運行應用程序

try { 
    gcloud = require('gcloud'); 
    var storage = gcloud.storage({ projectId: 'project-id' }); 
    var bucket = storage.bucket('my-bucket'); 
    bucket.file(src_file).createReadStream().pipe(fs.createWriteStream(src_file)); 
} catch (e) { 
    e = 'Error loading required classes for gcloud: '+gcloud+ ': '+e 
    console.log(e) 
    res.status(200).send(e); 
} 

當我運行這段代碼

undefined: Error: /app/node_modules/gcloud/node_modules/hash-stream-validation/node_modules/sse4_crc32/build/Release/sse4_crc32.node: invalid ELF header

它看起來像我不能導入gcloud類,但我不明白爲什麼它工作在本地主機,但不在GCE服務器?

回答

1

您從本地主機上傳或在不同的環境中編譯的ELF聲音無效。這些代碼需要在Google服務器上編譯/配置。您是否按照these instructions

+0

我已閱讀https://cloud.google.com/nodejs/getting-started/run-on-compute-engine的說明,但是是否真的需要執行所有此配置才能部署我的應用程序?這個例子如何:https://cloud.google.com/nodejs/getting-started/using-cloud-datastore在「結構化數據」示例中,「gcloud預覽應用程序部署app.yaml --set-default」命令是足以將應用程序部署到GCE服務器。我已經安裝了這個例子,我可以在本地主機和GCE服務器上運行它,只需這個簡單的部署命令 – Kwame

+1

@Kwame - 有不同的部署機制,需要不同的配置量並提供不同的權衡。如果您使用的是「gcloud預覽應用程序」,則使用的是正在GCE上運行的[託管虛擬機](https://cloud.google.com/appengine/docs/managed-vms/),但環境稍微受到限制。如果您想以更靈活的方式運行原始GCE虛擬機,則需要更多的工作和配置。 –

+2

謝謝米莎。自從我上次評論以來,我已經取得了一些進展。我發現「無效的ELF標題」指的是「可執行和可鏈接的格式」:https://community.oracle.com/thread/3749710這與eclipse(我的IDE)有關,所以我將我的代碼移出的Eclipse,並且我能夠將其上傳到GCE服務器,並且現在需要適當的gcloud類沒有任何錯誤。該應用程序仍然沒有運行,但我猜這是一個不同的問題。再次感謝。 – Kwame

相關問題