添加NPM软件包后,Firebase功能将无法部署

时间:2020-04-19 19:00:37

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

背景:我最近(尝试)将Taiko添加到我的Firebase Web应用程序中。 Taiko是一个浏览器自动化的npm软件包,例如Puppeteer。可能相关:下载Chromium即可正常工作。

问题:现在我的所有功能将部署。

问题,除了可以解决此特定问题之外,我更笼统的问题是:“我在此工作流程中遗漏了什么?” /“将来如何避免这个问题?”

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

  • 构建失败: {“错误”:{“ canonicalCode”:“ INVALID_ARGUMENT”,“ errorMessage”:“`npm_install`具有stderr输出:\ n / workspace / node_modules / fs-extra / lib / mkdirs / make-dir.js:86 \ n}在createScript(vm.js:80:10)\ n处捕获{\ n ^ \ n \ n语法错误:意外令牌{\ n Object.runInThisContext(vm.js:139:10)\ n在Module._compile(module.js:617:28)\ n在Object.Module._extensions..js(module.js:664:10)\ n在Module.load(module.js:566:32)\ n在tryModuleLoad(module.js:506:12)\ n在Function.Module._load(module.js:498:3)\ n在Module.require(module .js:597:17)\ n在require(内部/module.js:11:18)\n在Object。(/workspace/node_modules/fs-extra/lib/mkdirs/index.js:3:44)\ nnpm ERR!代码ELIFECYCLE \ nnpm ERR!errno 1 \ nnpm ERR!taiko@1.0.7安装:`node lib / install.js` \ nnpm ERR!退出状态1 \ nnpm ERR!\ nnpm ERR!失败taiko@1.0.7安装脚本。\ nnpm ERR!这可能不是npm的问题。上面可能还有其他日志记录输出。\ n \ nnpm错误!可以在以下位置找到该运行的完整日志:\ nnpm ERR! /builder/home/.npm/_logs/2020-04-19T14_36_20_217Z-debug.log\n\nerror:`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.js中创建了Taiko测试功能,require将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

  • 中的上述两个软件包

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

编辑:Taiko 1.07,节点12.16.2,npm 6.9.0,firebase-toolscli 8.1.1

任何见解表示赞赏!

1 个答案:

答案 0 :(得分:1)

来自Github上的Taiko团队:

由于fs-extra软件包,此错误通常在版本<节点10上间接发生。 Firebase云功能默认情况下使用节点8。请尝试按照文档中所述设置实验节点10。 https://firebase.google.com/docs/functions/manage-functions#set_nodejs_version

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

而且,对于“我在此工作流程中缺少什么”的更一般的答案是

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

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