添加 NPM 包后,Firebase 函数将无法部署



背景:我最近(试图(将Taiko添加到我的Firebase web应用程序中。Taiko是一个浏览器自动化npm包,类似于Puppeter。也许相关:它下载Chromium来工作。

问题:现在我的任何功能都不会部署。

问题除了克服这个特定问题之外,我更普遍的问题是,"我在这个工作流程中缺少了什么?"/"我如何在未来避免这个问题?">

错误消息:(我的粗体,突出显示可能相关的内容(

  • 生成失败:{"error":{"canonicalCode":"INVALID_ARGUMENT","errorMessage":"`npm_install`具有stderr输出:\n/workspace/node_modules/fs-extra/lib/mkdirs/make-dir.js:86\n}catch{\n^\n\nSyntaxError:Object.runInThisContext(vm.js:139:10(处的createScript(vm.js:80:10(处的意外令牌(module.js:617:28(\n在对象中。模块_扩展。。js(module.js:664:10(\n在module.load(module.js:566:32(\n在tryModuleLoad(modules.js:506:12(\n函数。模块_load(module.js:498:3(\n在module.require(module.js:597:17(\n在require(internal/module.js:1:18(\n在Object。(/workspace/node_modules/fs-extra/lib/mkdirs/index.js:3:44(\nnpm ERR!代码ELIFECYCLE\nnpm ERR!错误号1\nnpm ERR!taiko@1.0.7install:`node-lib/install.js`\nnpm ERR!退出状态1\nnpm ERR!\nnpm ERR在taiko@1.0.7安装脚本。\nnpm错误!这可能不是npm的问题。上面可能有额外的日志输出。\n\nnpm ERR!此运行的完整日志可在以下位置找到:\nnpm ERR/builder/home/.npm_logs/2020-04-19T14_36_20_217Z-debug.log错误:`npm_install`返回代码:1","errorType":"InternalError","errorId":"02C3A7B5"}}

package.json

{
"name": "functions",
"description": "Cloud Functions for Firebase",
"scripts": {
"lint": "eslint .",
"serve": "firebase serve --only functions",
"shell": "firebase functions:shell",
"start": "npm run shell",
"deploy": "firebase deploy --only functions",
"logs": "firebase functions:log"
},
"engines": {
"node": "8"
},
"dependencies": {
"firebase-admin": "^8.10.0",
"firebase-functions": "^3.3.0",
"node-fetch": "^2.6.0",
"stripe": "^7.14.0",
"taiko": "^1.0.6",
"bufferutil": "^4.0.1",
"utf-8-validate": "^5.0.2"
},
"devDependencies": {
"eslint": "^5.12.0",
"eslint-plugin-promise": "^4.0.1",
"firebase-functions-test": "^0.1.6"
},
"private": true
}

到目前为止我所做的:

  • index.jsrequire和Taiko中创建了Taiko测试函数。

  • 将Taiko添加到package.json

  • 在函数文件夹中运行npm install

  • 收到消息 npm WARN ws@7.2.3 requires a peer of bufferutil@^4.0.1 but none is installed. npm WARN ws@7.2.3 requires a peer of utf-8-validate@^5.0.2 but none is installed. You must install peer dependencies yourself.

  • 随后,npm install/functions中处理了上述两个包

这与我在index.js中创建Stripe函数时遵循的基本过程相同,没有任何问题。

编辑:Taiko 1.07,节点12.16.2,npm 6.9.0,firebase工具cli 8.1.1

任何见解都值得赞赏!

来自Github:上的Taiko团队

此错误通常发生在<节点10间接地由于fs额外的包。默认情况下,Firebase云功能使用节点8。请尝试设置expermental节点10,如文档中所述https://firebase.google.com/docs/functions/manage-functions#set_nodejs_version

因此,具体的答案是在Firebase项目包.json文件中将Node引擎设置为"10"

而且,对于"我在这个工作流程中缺少的东西",更一般的答案是

  • 在远程环境中运行包时,请确保该环境的运行时与本地开发环境匹配,否则行为可能会有所不同。

  • 为项目中的包使用适当版本的节点,而不一定是最新版本。

最新更新