Firebase部署问题:生成失败:npm错误!超过最大调用堆栈大小

Firebase部署问题:生成失败:npm错误!超过最大调用堆栈大小,firebase,npm,deployment,google-cloud-functions,Firebase,Npm,Deployment,Google Cloud Functions,我正在尝试通过以下方式部署Firebase云功能: firebase deploy --only functions:helloWorld 我的问题是,该命令有时是成功的,但大多数情况下由于上述错误而失败。原因可能是什么?如何解决 我遇到了一个问题,并尝试了许多推荐的解决方案(清除npm缓存并重新安装依赖项)。这两种解决方案对我来说都不可靠 以下是完整的控制台输出: === Deploying to '<my-firebase-project>'... i deploying

我正在尝试通过以下方式部署Firebase云功能:

firebase deploy --only functions:helloWorld
我的问题是,该命令有时是成功的,但大多数情况下由于上述错误而失败。原因可能是什么?如何解决

我遇到了一个问题,并尝试了许多推荐的解决方案(清除npm缓存并重新安装依赖项)。这两种解决方案对我来说都不可靠

以下是完整的控制台输出:

=== Deploying to '<my-firebase-project>'...

i  deploying functions
✔  functions: Finished running predeploy script.
i  functions: ensuring required API cloudfunctions.googleapis.com is enabled...
i  functions: ensuring required API cloudbuild.googleapis.com is enabled...
✔  functions: required API cloudbuild.googleapis.com is enabled
✔  functions: required API cloudfunctions.googleapis.com is enabled
i  functions: preparing functions directory for uploading...
i  functions: packaged functions (84.76 KB) for uploading
✔  functions: functions folder uploaded successfully
i  functions: current functions in project: myFunction1(us-central1), myFunction2(us-central1), myFunction3(us-central1)...
i  functions: uploading functions in project: helloWorld(us-central1)
i  functions: updating Node.js 10 function helloWorld(us-central1)...
⚠  functions[helloWorld(us-central1)]: Deployment error.
Build failed: npm ERR! Maximum call stack size exceeded

npm ERR! A complete log of this run can be found in:
npm ERR!     /builder/home/.npm/_logs/2020-10-15T17_38_33_530Z-debug.log; Error ID: 49341d49


Functions deploy had errors with the following functions:
    helloWorld


To try redeploying those functions, run:
    firebase deploy --only "functions:helloWorld"


To continue deploying other features (such as database), run:
    firebase deploy --except functions

Error: Functions did not deploy properly.
/firebase.json

{
  "functions": {
    "predeploy": [
    ],
    "source": "functions",
    "runtime": "nodejs10"
  },
  "emulators": {
    "functions": {
      "port": 5001
    },...
  }
...
}
{
  "name": "functions",
  "description": "Backend - Firebase Cloud Functions",
  "version": "1.0.0",
  "scripts": {
    "lint": "eslint .",
    "serve": "firebase emulators:start --only functions",
    "shell": "firebase functions:shell",
    "start": "npm run shell",
    "deploy": "firebase deploy --only functions",
    "logs": "firebase functions:log"
  },
  "engines": {
    "node": "14.3.0"
  },
  "dependencies": {
    "config": "^3.3.1",
    "core-util-is": "^1.0.2",
    "crypto-js": "^4.0.0",
    "firebase-admin": "^9.1.1",
    "firebase-functions": "^3.11.0",
    "myapp_config": "file:./config"
  },
  "devDependencies": {
    "eslint": "^5.12.0",
    "eslint-plugin-promise": "^4.0.1",
    "firebase-functions-test": "^0.2.0"
  },
  "private": true
}
/functions/package.json

{
  "functions": {
    "predeploy": [
    ],
    "source": "functions",
    "runtime": "nodejs10"
  },
  "emulators": {
    "functions": {
      "port": 5001
    },...
  }
...
}
{
  "name": "functions",
  "description": "Backend - Firebase Cloud Functions",
  "version": "1.0.0",
  "scripts": {
    "lint": "eslint .",
    "serve": "firebase emulators:start --only functions",
    "shell": "firebase functions:shell",
    "start": "npm run shell",
    "deploy": "firebase deploy --only functions",
    "logs": "firebase functions:log"
  },
  "engines": {
    "node": "14.3.0"
  },
  "dependencies": {
    "config": "^3.3.1",
    "core-util-is": "^1.0.2",
    "crypto-js": "^4.0.0",
    "firebase-admin": "^9.1.1",
    "firebase-functions": "^3.11.0",
    "myapp_config": "file:./config"
  },
  "devDependencies": {
    "eslint": "^5.12.0",
    "eslint-plugin-promise": "^4.0.1",
    "firebase-functions-test": "^0.2.0"
  },
  "private": true
}
开发堆栈:

  • macOS 10.15+
  • 节点版本=v14.3.0

事实证明,问题在于我是如何构建本地依赖关系的
myapp\u config
“myapp\u config”:“文件:./config”
。我重新设计了我的应用程序,完全删除了这一行,到目前为止,我还没有看到部署错误

该行上指示的./config实际上是指向我的项目根目录上的config文件夹的符号链接,我使用:ln-s./config./functions/config创建该文件夹,最初用于将项目范围内的配置相关模块交付到我的函数脚本中,而不必手动将这些文件复制到函数中。我认为CLI/npm不知何故会被符号链接弄糊涂或无法很好地使用符号链接(我猜它会看到
/config
及其符号链接
/functions/config
,并在它们之间进入无限循环)


更清楚地说明了我的代码结构和我最初试图解决的问题。

结果表明,问题在于我是如何构建本地依赖关系的
myapp\u config
“myapp\u config”:“文件:./config”
。我重新设计了我的应用程序,完全删除了这一行,到目前为止,我还没有看到部署错误

该行上指示的./config实际上是指向我的项目根目录上的config文件夹的符号链接,我使用:ln-s./config./functions/config创建该文件夹,最初用于将项目范围内的配置相关模块交付到我的函数脚本中,而不必手动将这些文件复制到函数中。我认为CLI/npm不知何故会被符号链接弄糊涂或无法很好地使用符号链接(我猜它会看到
/config
及其符号链接
/functions/config
,并在它们之间进入无限循环)


让我更清楚地了解我的代码结构以及我最初试图解决的问题。

您是说它提供给您的日志文件是空的、丢失的还是其他什么?只需
cat
查看文件中的内容。问题可能出在您的代码上,因此您应该编辑问题以显示重现问题的代码,以便任何人都可以使用您提供的说明重现问题。@DougStevenson我不知道日志文件位于何处。当我执行
ls/builder/home
时,我得到:
ls:/builder/home:没有这样的文件或目录
。它应该在macOS机器上的什么地方?@DougStevenson我编辑了这个问题,以提供一个简单的示例-上面的
index.js
文件是否足够或需要其他任何东西?我认为这里没有问题,但该日志文件的内容应该满足您的需要。如果CLI没有就部署过程中出现的问题向您提供完整或可操作的错误,您应该直接联系Firebase支持部门。您是说它提供给您的日志文件是空的、丢失的还是什么?只需
cat
查看文件中的内容。问题可能出在您的代码上,因此您应该编辑问题以显示重现问题的代码,以便任何人都可以使用您提供的说明重现问题。@DougStevenson我不知道日志文件位于何处。当我执行
ls/builder/home
时,我得到:
ls:/builder/home:没有这样的文件或目录
。它应该在macOS机器上的什么地方?@DougStevenson我编辑了这个问题,以提供一个简单的示例-上面的
index.js
文件是否足够或需要其他任何东西?我认为这里没有问题,但该日志文件的内容应该满足您的需要。如果CLI没有就部署过程中出现的问题向您提供完整或可操作的错误,您应该直接联系Firebase支持部门。