【问题标题】:Firebase Cloud Function deploy with "Error: An unexpected error has occurred."Firebase Cloud Function 部署时出现“错误:发生意外错误”。
【发布时间】:2019-09-11 17:17:13
【问题描述】:

运行firebase deployfirebase deploy --only functionsfirebase deploy --only functions:functionName 给我Error: An unexpected error has occurred. 不要将此问题标记为重复,因为我已经搜索了类似问题的每个答案,但没有解决问题。大约一个月前,我上次成功使用了 Firebase 云功能,但昨天我添加了一个新功能,当我尝试部署它时,我得到了那个错误。从那时起,我可能已经卸载/安装了 5 次节点,版本 6.x、8.x 和最新的 10.x,我创建了新的 firebase 项目,尝试部署初始化云功能时出现的“helloworld”功能,但没有任何效果.

我从这里 (https://nodejs.org/en/download/) 下载节点,最新版本 10.15.3。 我知道在云函数文档 (https://firebase.google.com/docs/functions/get-started) 中说“云函数可以在 Node v6 或 Node v8 上运行。”但是 Doug Stevenson (https://www.youtube.com/watch?v=DYfP-UIKxH0&list=PLl-K7zZEsYLkPZHe41m4jfAxUi0JjLgSM) 在本教程中使用 v9.5.0 没有问题,我有还尝试了多个 v6 和 v8 版本,但它不适用于 v10 并且存在相同的问题。

所以在我下载到“D:\node”目录后,我可以运行这些命令:

C:\Users\PC>node --version
v10.15.3

C:\Users\PC>npm --version
6.4.1

C:\Users\PC>npm version
{ npm: '6.4.1',
  ares: '1.15.0',
  cldr: '33.1',
  http_parser: '2.8.0',
  icu: '62.1',
  modules: '64',
  napi: '3',
  nghttp2: '1.34.0',
  node: '10.15.3',
  openssl: '1.1.0j',
  tz: '2018e',
  unicode: '11.0',
  uv: '1.23.2',
  v8: '6.8.275.32-node.51',
  zlib: '1.2.11' }

安装程序还在“C:\Users\PC\AppData\Roaming\npm”目录中添加了 npm,并为“C:\Users\PC\AppData\Roaming”和“D:\node”添加了环境变量 然后我转到 D:\node 目录并运行以下命令:

npm install -g firebase-tools

然后我用这个检查firebase版本

D:\node>firebase --version
6.7.0

然后我执行firebase login 表明我已经登录,我执行firebase list 正确显示我的firebase 项目。

然后我创建空文件夹 newFunctions 并运行以下命令:

firebase init functions

我选择相同的项目,打字稿作为语言并等待设置完成,

import * as functions from 'firebase-functions';

// // Start writing Firebase Functions
// // https://firebase.google.com/docs/functions/typescript
//
 export const helloWorld = functions.https.onRequest((request, response) => {
  response.send("Hello from Firebase!");
 });

这是在 index.ts 文件中创建的默认函数, 然后我将目录更改为 newFunctions\functions 并运行此命令,就像 Doug 在上面那个视频中所做的那样:

npm install firebase-functions@latest firebase-admin@latest --save

它在函数目录中添加了 node_modules 文件夹。 然后我运行firebase deploy (tried with firebase deploy --only functions also) 我明白了:

在寻找答案时,我发现我可以使用 --debug 运行带有更多信息的命令:

firebase deploy --debug --only functions

我明白了:

+  functions: functions folder uploaded successfully
[2019-04-22T13:44:45.305Z] TypeError: Cannot read property 'match' of undefined
    at exports.getAppEngineLocation (C:\Users\PC\AppData\Roaming\npm\node_modules\firebase-tools\lib\functionsConfig.js:41:27)
    at module.exports (C:\Users\PC\AppData\Roaming\npm\node_modules\firebase-tools\lib\deploy\functions\release.js:83:29)
    at _chain (C:\Users\PC\AppData\Roaming\npm\node_modules\firebase-tools\lib\deploy\index.js:22:40)
    at C:\Users\PC\AppData\Roaming\npm\node_modules\firebase-tools\lib\deploy\index.js:69:16
    at process._tickCallback (internal/process/next_tick.js:68:7)

Error: An unexpected error has occurred.

一些遇到类似错误的人使用 node v6 解决了问题,我也尝试过,但遇到了同样的错误。 我失去了 10 多个小时试图解决这个不是由我或我的代码引起的问题。

【问题讨论】:

  • 看起来这是与 npm 本身有关的错误。在尝试通过npm install 重新安装之前,您是否尝试过删除 package-lock.json 并删除 node_modules/ 文件夹?
  • 我只是这样做了,没有任何改变。我删除了 package-lock.json 文件和 node_modules 文件夹,然后我在我的函数文件夹中运行 npm install ,它安装了 node_modules 文件夹,在我运行 firebase deploy 后我得到了同样的错误
  • 我也有同样的问题。我使用此命令“firebase use project-id”和部署工作将目标更改为另一个项目。重新调整到我的原始目标项目时,错误再次出现。这些工具似乎无法从 firebase 检索项目位置。
  • 我刚收到 firebase 支持的回复:“很遗憾,最新的 firebase 工具存在问题,我们的工程团队目前正在努力修复它,同时您可以通过降级工具来解决它以下命令 npm install -g firebase-tools@6.6.0 " 这解决了我的问题,我在尝试部署功能时不再收到该错误

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


【解决方案1】:

嘿,我不确定您是否已对此进行了排序,但我刚刚开始使用 firebase 和云功能并通过教程,第一次部署给了我这个错误。

我在这篇文章之后通过降级我的 NPM 设法让它工作:

TypeError: Cannot read property 'wanted' of undefined:

【讨论】: