以非零退出代码开头的 Firebase 部署错误(项目路径中的 space)
Firebase deploy errors starting with non-zero exit code (space in project path)
我最近遇到了 firebase 部署命令的问题。在 firebase deploy 命令之后,除了 firebase(存储、数据库等)之外的所有其他人都被部署了所以我决定重新安装 firebase 来解决这个问题,但是在重新安装之后我的问题变得更大了。现在 none 部署时出现以下错误:
i deploying database, functions
Running command: npm --prefix $RESOURCE_DIR run lint
npm ERR! path C:\Users\faruk\Google Drive\Android\firebase$RESOURCE_DIR\package.json
npm ERR! code ENOENT
npm ERR! errno -4058
npm ERR! syscall open
npm ERR! enoent ENOENT: no such file or directory, open 'C:\Users\faruk\Google Drive\Android\firebase$RESOURCE_DIR\package.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:\Users\faruk\AppData\Roaming\npm-cache\_logs18-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)。因此,我编辑了我的 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:\Users\faruk\.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 Files\nodejs\node_modules\npm
Error: functions predeploy error: Command terminated with non-zero exit code1
如有任何建议,我们将不胜感激。提前致谢。
错误源于您在项目路径中某处有一个 space ("Google Drive"):
C:\Users\faruk\Google Drive\Android\firebase$RESOURCE_DIR\package.json
不幸的是,这混淆了 npm 命令行,它把它当作由 space 分隔的两个参数。
通常,我希望能够在整件事周围加上引号,以防止 space 被这样解释。所以我尝试了这个:
"predeploy": [
"npm --prefix \"%RESOURCE_DIR%\" run lint"
]
它对我有用。
我将在内部与 Firebase 团队跟进这个问题,以及需要为 Windows 进行更改的事实。
对我来说,问题是(我推测)因为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",
...
}
我在 Windows 遇到了同样的问题。我所做的是复制 functions 文件夹中的所有文件并将其传递到 %RESOURCE_DIR% 文件夹,然后我 运行 Firebase 部署并成功部署。
实际情况是,在 Windows 中,firebase.json
默认包含以下内容:
"predeploy": [
"npm --prefix \"$RESOURCE_DIR\" run lint"
]
修改为:
"predeploy": [
"npm --prefix \"%RESOURCE_DIR%\" run lint"
]
它对我有用,希望对你有用。
在 firebase.json
中将 $RESOURCE_DIR 更改为 %RESOURCE_DIR% 后这对我有用
{
"functions": {
"predeploy": [
"npm --prefix \"%RESOURCE_DIR%\" run lint",
"npm --prefix \"%RESOURCE_DIR%\" run build"
]
}
}
使用 VS 代码时,打开 Firecast 的文件夹(这有助于打开资源目录的 firebase.json)在 firebase.json 将文件代码更改为:
{
"functions": {
"predeploy": [
"npm --prefix \"%RESOURCE_DIR%\" run lint",
"npm --prefix \"%RESOURCE_DIR%\" run build"
]
}
}
"predeploy": [
"npm --prefix \"$RESOURCE_DIR\" 运行 lint"
]
我终于在 firebase.json 上删除了它,它又开始部署了
在我的例子中,我创建了一个打印日志的函数,如下所示:
function log(tag: string, value: any) {
console.log(tag, JSON.stringify(value));
}
当我在它前面添加 async
时,它开始分解构建:)
在项目 运行 npm install
的 functions
文件夹中。也许你在 index.ts
中导入了一个或多个未安装的节点模块,在这种情况下你需要 运行 npm install module_not_installed_yet --save
对我来说,上述 none 有效。最初,在全新的 firebase-function 安装中,我在 non-zero exit code2
上遇到错误。所以我删除了功能目录,重新安装,但在功能目录配置步骤中,我选择对 add-lint 步骤说 "no"。
一旦我选择不包括 lint,我就得到了错误 non-zero exit code1
。
从那里检查了我的 firebase.json 文件并查看了预部署脚本。因为部署过程在这一点上失败了,所以我就从这里开始。我的 firebase.json 文件如下所示:
{
"functions": {
"predeploy": [ "npm --prefix \"$RESOURCE_DIR\" run lint" ]
}
}
出于某种原因,我直觉地想到删除预部署脚本中的 lint
。这解决了一切。顺便说一句,我在 MacOS 上..
我修好了:你要注意别的地方
你看到错误描述了吗
$ firebase deploy --only functions
=== Deploying to 'fix-firebase-functions'...
i deploying functions
Running command: npm --prefix "$RESOURCE_DIR" run lint
> functions@ lint C:\Users\vuduc\OneDrive\Tài liệu\Code tutotial practice\test\functions
> eslint .
C:\Users\vuduc\OneDrive\Tài liệu\Code tutotial practice\test\functions\index.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:\Users\vuduc\AppData\Roaming\npm-cache\_logs20-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:\Users\vuduc\AppData\Local\Yarn\Data\global\node_modules\cross-env\node_modules\cross-spawn\lib\enoent.js:6:26)
at verifyENOENT (C:\Users\vuduc\AppData\Local\Yarn\Data\global\node_modules\cross-env\node_modules\cross-spawn\lib\enoent.js:40:16)
at ChildProcess.cp.emit (C:\Users\vuduc\AppData\Local\Yarn\Data\global\node_modules\cross-env\node_modules\cross-spawn\lib\enoent.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:\Users\vuduc\AppData\Local\Yarn\Data\global\node_modules\cross-env\node_modules\cross-spawn\lib\enoent.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
error deploy cloud functions
您需要向上滚动才能看到错误描述,行
functions predeploy error: Command terminated with non-zero exit code1
只是一个笼统的描述,有错误需要在部署前修复。
这是真正需要注意的地方,您需要修复哪些指令?
✖ 4 problems (2 errors, 2 warnings)
Pay attention here
我通过重新启动 firebase init 解决了这个问题,然后不选择使用 eslint。之后部署工作。
在您的控制台中输入“firebase deploy --only hosting”。它对我有用
如果您不从 firebase 选择 blaze 计划,也会发生这种情况。基本上部署云功能需要激活一个 blaze 计划
我最近遇到了 firebase 部署命令的问题。在 firebase deploy 命令之后,除了 firebase(存储、数据库等)之外的所有其他人都被部署了所以我决定重新安装 firebase 来解决这个问题,但是在重新安装之后我的问题变得更大了。现在 none 部署时出现以下错误:
i deploying database, functions
Running command: npm --prefix $RESOURCE_DIR run lint
npm ERR! path C:\Users\faruk\Google Drive\Android\firebase$RESOURCE_DIR\package.json
npm ERR! code ENOENT
npm ERR! errno -4058
npm ERR! syscall open
npm ERR! enoent ENOENT: no such file or directory, open 'C:\Users\faruk\Google Drive\Android\firebase$RESOURCE_DIR\package.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:\Users\faruk\AppData\Roaming\npm-cache\_logs18-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)。因此,我编辑了我的 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:\Users\faruk\.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 Files\nodejs\node_modules\npm
Error: functions predeploy error: Command terminated with non-zero exit code1
如有任何建议,我们将不胜感激。提前致谢。
错误源于您在项目路径中某处有一个 space ("Google Drive"):
C:\Users\faruk\Google Drive\Android\firebase$RESOURCE_DIR\package.json
不幸的是,这混淆了 npm 命令行,它把它当作由 space 分隔的两个参数。
通常,我希望能够在整件事周围加上引号,以防止 space 被这样解释。所以我尝试了这个:
"predeploy": [
"npm --prefix \"%RESOURCE_DIR%\" run lint"
]
它对我有用。
我将在内部与 Firebase 团队跟进这个问题,以及需要为 Windows 进行更改的事实。
对我来说,问题是(我推测)因为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",
...
}
我在 Windows 遇到了同样的问题。我所做的是复制 functions 文件夹中的所有文件并将其传递到 %RESOURCE_DIR% 文件夹,然后我 运行 Firebase 部署并成功部署。
实际情况是,在 Windows 中,firebase.json
默认包含以下内容:
"predeploy": [
"npm --prefix \"$RESOURCE_DIR\" run lint"
]
修改为:
"predeploy": [
"npm --prefix \"%RESOURCE_DIR%\" run lint"
]
它对我有用,希望对你有用。
在 firebase.json
中将 $RESOURCE_DIR 更改为 %RESOURCE_DIR% 后这对我有用{
"functions": {
"predeploy": [
"npm --prefix \"%RESOURCE_DIR%\" run lint",
"npm --prefix \"%RESOURCE_DIR%\" run build"
]
}
}
使用 VS 代码时,打开 Firecast 的文件夹(这有助于打开资源目录的 firebase.json)在 firebase.json 将文件代码更改为:
{
"functions": {
"predeploy": [
"npm --prefix \"%RESOURCE_DIR%\" run lint",
"npm --prefix \"%RESOURCE_DIR%\" run build"
]
}
}
"predeploy": [ "npm --prefix \"$RESOURCE_DIR\" 运行 lint" ]
我终于在 firebase.json 上删除了它,它又开始部署了
在我的例子中,我创建了一个打印日志的函数,如下所示:
function log(tag: string, value: any) {
console.log(tag, JSON.stringify(value));
}
当我在它前面添加 async
时,它开始分解构建:)
在项目 运行 npm install
的 functions
文件夹中。也许你在 index.ts
中导入了一个或多个未安装的节点模块,在这种情况下你需要 运行 npm install module_not_installed_yet --save
对我来说,上述 none 有效。最初,在全新的 firebase-function 安装中,我在 non-zero exit code2
上遇到错误。所以我删除了功能目录,重新安装,但在功能目录配置步骤中,我选择对 add-lint 步骤说 "no"。
一旦我选择不包括 lint,我就得到了错误 non-zero exit code1
。
从那里检查了我的 firebase.json 文件并查看了预部署脚本。因为部署过程在这一点上失败了,所以我就从这里开始。我的 firebase.json 文件如下所示:
{
"functions": {
"predeploy": [ "npm --prefix \"$RESOURCE_DIR\" run lint" ]
}
}
出于某种原因,我直觉地想到删除预部署脚本中的 lint
。这解决了一切。顺便说一句,我在 MacOS 上..
我修好了:你要注意别的地方
你看到错误描述了吗
$ firebase deploy --only functions
=== Deploying to 'fix-firebase-functions'...
i deploying functions
Running command: npm --prefix "$RESOURCE_DIR" run lint
> functions@ lint C:\Users\vuduc\OneDrive\Tài liệu\Code tutotial practice\test\functions
> eslint .
C:\Users\vuduc\OneDrive\Tài liệu\Code tutotial practice\test\functions\index.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:\Users\vuduc\AppData\Roaming\npm-cache\_logs20-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:\Users\vuduc\AppData\Local\Yarn\Data\global\node_modules\cross-env\node_modules\cross-spawn\lib\enoent.js:6:26)
at verifyENOENT (C:\Users\vuduc\AppData\Local\Yarn\Data\global\node_modules\cross-env\node_modules\cross-spawn\lib\enoent.js:40:16)
at ChildProcess.cp.emit (C:\Users\vuduc\AppData\Local\Yarn\Data\global\node_modules\cross-env\node_modules\cross-spawn\lib\enoent.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:\Users\vuduc\AppData\Local\Yarn\Data\global\node_modules\cross-env\node_modules\cross-spawn\lib\enoent.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
error deploy cloud functions 您需要向上滚动才能看到错误描述,行
functions predeploy error: Command terminated with non-zero exit code1
只是一个笼统的描述,有错误需要在部署前修复。 这是真正需要注意的地方,您需要修复哪些指令?
✖ 4 problems (2 errors, 2 warnings)
Pay attention here
我通过重新启动 firebase init 解决了这个问题,然后不选择使用 eslint。之后部署工作。
在您的控制台中输入“firebase deploy --only hosting”。它对我有用
如果您不从 firebase 选择 blaze 计划,也会发生这种情况。基本上部署云功能需要激活一个 blaze 计划