【问题标题】:Unable to run application in Google Compute Engine VM无法在 Google Compute Engine VM 中运行应用程序
【发布时间】:2015-09-20 13:06:12
【问题描述】:

我有一个 Node.js 应用程序,它可以在 localhost 上正确运行,但不能在 Compute Engine 虚拟机中运行。这是一个sn-p:

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);
}

当我运行这段代码时

未定义:错误:/app/node_modules/gcloud/node_modules/hash-stream-validation/node_modules/sse4_crc32/build/Release/sse4_crc32.node:无效的 ELF 标头

看起来我无法导入 gcloud 类,但我不明白为什么它在 localhost 中有效,但在 GCE 服务器中无效??

【问题讨论】:

    标签: node.js google-app-engine google-compute-engine gcloud


    【解决方案1】:

    无效的 ELF 听起来像是您从 localhost 上传或在不同的环境中编译的。这些部门需要在 Google 服务器上进行编译/配置。你关注these instructions了吗?

    【讨论】:

    • 我已经阅读了cloud.google.com/nodejs/getting-started/run-on-compute-engine 的说明,但是我真的需要进行所有这些配置来部署我的应用程序吗?这个示例怎么样:cloud.google.com/nodejs/getting-started/using-cloud-datastore 在“结构化数据”示例中,“gcloud preview app deploy app.yaml --set-default”命令足以将应用程序部署到 GCE 服务器。我已经安装了这个例子,我可以通过这个简单的部署命令在 localhost 和 GCE 服务器上运行它
    • @Kwame — 有不同的部署机制需要不同数量的配置并提供不同的权衡。如果您使用的是“gcloud preview app”,那么您使用的是Managed VMs,它在 GCE 上运行,但环境稍微受限。如果您想在原始 GCE 虚拟机上运行更灵活,则需要更多的工作和配置。
    • 谢谢米莎。自从我上次发表评论以来,我已经取得了一些进展。我发现“无效的 ELF 标头”指的是“可执行和可链接格式”:community.oracle.com/thread/3749710 这与 eclipse(我的 IDE)有关,所以我将我的代码移出 Eclipse,我能够上传它到 GCE 服务器,现在需要适当的 gcloud 类而没有任何错误。该应用程序仍未运行,但我猜那是一个不同的问题。再次感谢。
    • @Kwame 嘿,我遇到了完全相同的问题,我使用 Sublime 作为我的文本编辑器,我不确定是什么原因造成的。您将代码移到了哪里?
    • @DynamoBooster 我使用了 TextMate。
    猜你喜欢
    • 1970-01-01
    • 2017-08-11
    • 2018-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-07
    • 1970-01-01
    • 2012-05-25
    相关资源
    最近更新 更多