2015-09-20 71 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

相关问题