【问题标题】:How can I deploy a Google Cloud Function which uses a tgz file as a dependency?如何部署使用 tgz 文件作为依赖项的 Google Cloud 函数?
【发布时间】:2019-04-08 16:08:33
【问题描述】:

出于不值得探讨的原因,我需要更新运行节点 10 的现有 Google Cloud Function 以使用本地 tgz 文件作为其依赖项之一(通过 npm pack 生成;在本地工作)。当我尝试在我的 Cloud Function 部署中包含存档文件和更新的 package.json 时,我遇到了以下错误:

错误:(gcloud.functions.deploy)操作错误:代码=3,消息=构建 失败:{“错误”:{“canonicalCode”:“INVALID_ARGUMENT”, "errorMessage": "npm_install 有标准错误输出:\nnpm ERR!cb() 从不 调用!\n\nnpm 错误!这是 npm 本身的错误。请报告 此错误位于:\nnpm ERR! https://npm.community\n\nnpm 错误!一种 此运行的完整日志可在以下位置找到:\nnpm ERR!
/builder/home/.npm/_logs/2019-04-08T16_01_08_142Z-debug.log\nnpm 错误! 代码 ELIFECYCLE\nnpm 错误!错误号 1\nnpm 错误! @预安装:npm --prefix functions install\nnpm 错误!退出状态 1\nnpm 错误! \nnpm 错误! @预安装脚本失败。\nnpm ERR!这可能不是 npm 的问题。可能有额外的日志输出 上面。\n\nnpm 错误!可以在以下位置找到此运行的完整日志:\nnpm 错误!
/builder/home/.npm/_logs/2019-04-08T16_01_08_171Z-debug.log\n\n错误: npm_install 返回码:1", "errorType": "InternalError", "errorId": "C9487FAD"}}

很遗憾,我无法访问错误消息中引用的日志文件。不过,我会考虑向 NPM 提交罚单。

我想知道是否有人知道解决此问题的方法,或者在云函数中包含 pack'd 依赖项时是否应该使用不同的策略。

环境:

节点 v10.14.2

NPM 6.7.0

package.json:

{
  ...
  "engines": {
    "node": "~10.14.2",
    "npm": "~6.7.0"
  },
  "dependencies": {
    ...
    "foo": "file:foo.tgz"
    "bar": "./bar.tgz"     // I've also tried other variants
  },
  "private": true
}

【问题讨论】:

    标签: node.js npm google-cloud-functions


    【解决方案1】:

    我相信您现在已经找到了解决方案,但对于那些遇到同样错误的人:

    不要将 package-lock.json 保存在您的 functions 文件夹中,不应将其发送到安装 Cloud Functions 的服务器npm 自己打包。

    【讨论】:

    • 这里的答案很好。在我的 .gcloudignore 中,我有 #Restrict all with /[!.]*/.?*,但锁定文件仍在继续并导致问题!
    猜你喜欢
    • 2019-02-13
    • 1970-01-01
    • 1970-01-01
    • 2020-05-31
    • 1970-01-01
    • 2022-07-20
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多