Firebase 部署错误以非零退出代码(项目路径中的空格)开头



我最近遇到了Firebase部署命令的问题。在 firebase 部署命令之后,除了 firebase(存储、数据库等(之外,所有其他命令都被部署了,所以我决定重新安装 firebase 来解决这个问题,但在重新安装后,我的问题变得更大了。现在,它们都不会部署并出现以下错误:

i deploying database, functions
Running command: npm --prefix $RESOURCE_DIR run lint
npm ERR! path C:UsersfarukGoogle DriveAndroidfirebase1$RESOURCE_DIRpackage.json
npm ERR! code ENOENT
npm ERR! errno -4058
npm ERR! syscall open
npm ERR! enoent ENOENT: no such file or directory, open 'C:UsersfarukGoogle DriveAndroidfirebase1$RESOURCE_DIRpackage.json'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent
npm ERR! A complete log of this run can be found in:
npm ERR!     C:UsersfarukAppDataRoamingnpm-cache_logs2018-01-24T18_21_34_878Z-debug.log
Error: functions predeploy error: Command terminated with non-zero exit code4294963238

经过一番研究,我看到了一些关于这个的主题,建议改变

$RESOURCE_DIR to %RESOURCE_DIR%

在Windows系统中(我正在使用Windows 10 btw(。因此,我编辑了我的firebase.json文件,该文件位于函数文件夹的较高级别。喜欢这个。(我不知道这是否是我应该编辑的正确文件(

  "database": {
    "rules": "database.rules.json"
  },
  "functions": {
    "predeploy": [
      "npm --prefix %RESOURCE_DIR% run lint"
    ]
  }
}

但是在这次编辑之后,我开始收到另一条这样的错误消息。

i  deploying database, functions
Running command: npm --prefix %RESOURCE_DIR% run lint
Usage: npm <command>
where <command> is one of:
    access, adduser, bin, bugs, c, cache, completion, config,
    ddp, dedupe, deprecate, dist-tag, docs, doctor, edit,
    explore, get, help, help-search, i, init, install,
    install-test, it, link, list, ln, login, logout, ls,
    outdated, owner, pack, ping, prefix, profile, prune,
    publish, rb, rebuild, repo, restart, root, run, run-script,
    s, se, search, set, shrinkwrap, star, stars, start, stop, t,
    team, test, token, tst, un, uninstall, unpublish, unstar,
    up, update, v, version, view, whoami
npm <command> -h     quick help on <command>
npm -l           display full usage info
npm help <term>  search for help on <term>
npm help npm     involved overview
Specify configs in the ini-formatted file:
    C:Usersfaruk.npmrc
or on the command line via: npm <command> --key value
Config info can be viewed via: npm help config
npm@5.6.0 C:Program Filesnodejsnode_modulesnpm
Error: functions predeploy error: Command terminated with non-zero exit code1

任何建议不胜感激。提前谢谢。

该错误源于您在项目路径("Google 云端硬盘"(中的某个位置有一个空格:

C:UsersfarukGoogle DriveAndroidfirebase1$RESOURCE_DIRpackage.json

不幸的是,这混淆了 npm 命令行,它将其视为由该空格分隔的两个参数。

通常,我希望能够在整个事情周围放置引号,以防止空间以这种方式解释。 所以我试了这个:

"predeploy": [
  "npm --prefix "%RESOURCE_DIR%" run lint"
]

它对我有用。

我将在内部跟进Firebase团队关于这个问题,以及需要对Windows进行更改的事实。

"predeploy": [ "npm --前缀 \"$RESOURCE_DIR\" 运行 lint"]

最后,我在firebase.json上删除了它,它再次开始部署

实际上发生的事情是,在Windows中,默认情况下firebase.json包含以下内容:

"predeploy": [
  "npm --prefix "$RESOURCE_DIR" run lint"
]

将其修改为:

"predeploy": [
  "npm --prefix "%RESOURCE_DIR%" run lint"
]
它对

我有用,希望它对你有用。

对我来说

,以上都不起作用。最初,在一个新的火碱功能安装中,我在non-zero exit code2上收到错误。所以我删除了函数目录,重新安装,但在函数目录配置步骤中,我选择对 add-lint 步骤说"不"。

一旦我选择不包括 lint,我就会收到错误non-zero exit code1.

从那里检查了我的Firebase.json文件并查看了预部署脚本。 因为此时部署过程失败了,所以我就是从这里开始的。 我的Firebase.json文件看起来像这样:

{
    "functions": {
        "predeploy": [ "npm --prefix "$RESOURCE_DIR" run lint" ]
    }
}

出于某种原因,我直觉地想到要删除预部署脚本中的lint。 这修复了一切。顺便说一下,我在MacOS上。

"redeploy": [
    "npm --prefix "%RESOURCE_DIR%" run lint"
]

使用redeploy代替predeploy

在 firebase.json 中将 $RESOURCE_DIR 更改为 %RESOURCE_DIR% 后,这对我有用

{
  "functions": {
    "predeploy": [
      "npm --prefix "%RESOURCE_DIR%" run lint",
      "npm --prefix "%RESOURCE_DIR%" run build"
    ]
  }
}

控制台"Firebase 部署 - 仅托管"中键入此内容。它对我有用

尝试在项目的functions文件夹中运行npm install

也许您正在导入一个或多个未安装的index.ts节点模块,在这种情况下,您需要通过像这样运行来安装它:

npm install <somemodule> --save

我在Windows中遇到了同样的问题。我所做的是复制函数文件夹中的所有文件并将其传递到 %RESOURCE_DIR% 文件夹,然后我运行 Firebase 部署并成功部署。

我修复了它:你必须在另一个地方注意

您是否看到错误描述

$ firebase deploy --only functions
=== Deploying to 'fix-firebase-functions'...
i  deploying functions
Running command: npm --prefix "$RESOURCE_DIR" run lint
> functions@ lint C:UsersvuducOneDriveTài liệuCode tutotial         practicetestfunctions
> eslint .

C:UsersvuducOneDriveTài liệuCode tutotial practicetestfunctionsindex.js
  37:16  warning  Avoid nesting promises                      promise/no-nesting
  42:13  error    Expected catch() or return                  promise/catch-or-return
  42:13  warning  Avoid nesting promises                      promise/no-nesting
  42:31  error    Each then() should return a value or throw  promise/always-return
✖ 4 problems (2 errors, 2 warnings)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! functions@ lint: `eslint .`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the functions@ lint script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR!     C:UsersvuducAppDataRoamingnpm-cache_logs2020-06-01T14_38_16_060Z-debug.log
events.js:287
    throw er; // Unhandled 'error' event
      ^
Error: spawn npm --prefix "%RESOURCE_DIR%" run lint ENOENT
    at notFoundError (C:UsersvuducAppDataLocalYarnDataglobalnode_modulescross-envnode_modulescross-spawnlibenoent.js:6:26)
    at verifyENOENT (C:UsersvuducAppDataLocalYarnDataglobalnode_modulescross-envnode_modulescross-spawnlibenoent.js:40:16)
    at ChildProcess.cp.emit (C:UsersvuducAppDataLocalYarnDataglobalnode_modulescross-envnode_modulescross-spawnlibenoent.js:27:25)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:275:12)
Emitted 'error' event on ChildProcess instance at:
    at ChildProcess.cp.emit (C:UsersvuducAppDataLocalYarnDataglobalnode_modulescross-envnode_modulescross-spawnlibenoent.js:30:37)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:275:12)         
  code: 'ENOENT',
  errno: 'ENOENT',
  syscall: 'spawn npm --prefix "%RESOURCE_DIR%" run lint',
  path: 'npm --prefix "%RESOURCE_DIR%" run lint',
  spawnargs: []

Error: functions predeploy error: Command terminated with non-zero exit code1

部署云函数时出错您需要向上滚动才能看到错误描述,该行

functions predeploy error: Command terminated with non-zero exit code1

只是在部署之前需要修复错误的一般描述。这是真正需要注意的,您需要修复哪些说明?

✖ 4 problems (2 errors, 2 warnings)

注意这里

这为我修复了它:

  1. 转到项目根目录中的"firebase.json"文件

  2. 删除 firebase.json 中"预部署">中的所有内容,它将停止运行导致问题的脚本。

对我来说

,问题是(我认为(firebase找不到脚本。

没用:

{
  "hosting": {
    "predeploy": "predeploy.sh",
    ...
}
Running command: predeploy.sh
events.js:160
      throw er; // Unhandled 'error' event
      ^
Error: spawn predeploy.sh ENOENT
    at exports._errnoException (util.js:1020:11)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:193:32)
    at onErrorNT (internal/child_process.js:367:16)
    at _combinedTickCallback (internal/process/next_tick.js:80:11)
    at process._tickCallback (internal/process/next_tick.js:104:9)
    at Module.runMain (module.js:606:11)
    at run (bootstrap_node.js:389:7)
    at startup (bootstrap_node.js:149:9)
    at bootstrap_node.js:504:3
Error: hosting predeploy error: Command terminated with non-zero exit code1

确实有效:(注意./(

{
  "hosting": {
    "predeploy": "./predeploy.sh",
    ...
}

使用 VS 代码时,打开 Firecast 的文件夹(这有助于打开资源目录的 firebase.json( 在 firebase.json将文件代码更改为:

{
  "functions": {
    "predeploy": [
      "npm --prefix "%RESOURCE_DIR%" run lint",
      "npm --prefix "%RESOURCE_DIR%" run build"
    ]
  }
}

就我而言,我创建了一个打印日志的函数,如下所示:

function log(tag: string, value: any) {
    console.log(tag, JSON.stringify(value));
}

当我在它前面添加async时,它开始爆炸构建:)

我通过重新启动 firebase 初始化来解决这个问题,然后不选择使用 eslint。部署在那之后工作。

如果您不从火力基地选择火焰计划,也会发生这种情况。 基本上,云功能的部署需要激活 Blaze 计划

我在Mac上,由于我将Firebase项目移动到另一个目录/笔记本电脑,因此我遇到了这个确切的问题。

我通过重新初始化我的 Firebase 项目解决了我的问题。

firebase init

不过要小心。由于您的大多数文件已经存在,因此它可能希望覆盖它们。只需对所有覆盖问题说不。当然,除非您的所有代码都被推送到 Firebase 控制台......它应该是😋

"predeploy": [ "npm --prefix "$RESOURCE_DIR" run lint" ]

我删除了它firebase.json最后,它对我有用。

相关内容

  • 没有找到相关文章

最新更新