Cloud Functions 在 Windows 上的 lint 期间部署错误:"enoent ENOENT: no such file or directory"
Cloud Functions deploy error during lint on Windows: "enoent ENOENT: no such file or directory"
在 firebase function getting started guide 之后尝试使用以下方法部署时出现看似简单的错误:
firebase deploy --only functions
i deploying functions
Running command: npm --prefix $RESOURCE_DIR run lint
npm ERR! path C:\Users\Beat\leginformant$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\Beat\leginformant$RESOURCE_DIR\package.json'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent
package.json 文件确实存在,正如我的 project/functions/package.json 中的教程所示。
尝试更改或打印出 RESOURCE_DIR env 但没有成功。假设它将在 NPM shell 环境中被限定。
npm 版本:5.6.0
节点版本:8.9.0
这是 Firebase CLI 3.17.0 至至少 3.17.3 的一个已知问题,但仅限于 Windows。您可以在您的机器上通过编辑项目根目录下的 firebase.json
并在您在那里看到的 npm 命令中将 $RESOURCE_DIR
替换为 %RESOURCE_DIR%
来修复此问题。前者是使用环境变量的 unix 语法方式,而后者是 Windows 命令 shell 语法。由于您使用的是 Windows,因此您需要使用 Windows 语法。
团队正在研究避免必须更改您使用的配置文件的方法,因为对于跨平台工作的团队来回更改同一个文件并不是很方便。
编辑:使用 CLI 版本 3.17.5 创建的项目应解决此问题。
作为额外的 npm --prefix %RESOURCE_DIR% 运行 lint 就像@Deji James 说的那样,让我取得了一些进步,但仍然没有奏效。
作为建议,我找到了这个
https://github.com/firebase/firebase-tools/issues/610
和@merlinnot 在这里说
嘿伙计们,你们在 firebase.json 的预部署中可能都有 sth,不是吗?如果不是那么重要,只需删除 你现在拥有的东西。
对我有用。
PS。在决定删除之前,我已经完成了所有重新安装、卸载的事情。只有这个有效。
当运行
firebase init functions
我用的是这个配置
? What language would you like to use to write Cloud Functions? JavaScript
//TypeScript doesn't work
? Do you want to use ESLint to catch probable bugs and enforce style? Yes
//If you don't you will get a missing file lint
? File functions/package.json already exists. Overwrite? Yes
? Do you want to install dependencies with npm now? Yes
//Why not
然后如果使用 windows
将 firebase.json
中的 $RESOURCE_DIR 替换为 %RESOURCE_DIR%
您可以通过访问 firebase.json
文件并删除包含 RESOURCE_DIR
.
的这一行来解决此问题
除其他建议外,如果您将 preflight/predeploy 命令更改为:
"npm --prefix \"$RESOURCE_DIR\" run lint", OR
"npm --prefix \"%RESOURCE_DIR%\" run lint"
到
"npm --prefix ./functions run lint"
问题似乎已解决。这也解决了 Windows 和 Linux.
的问题
要查看更多详细信息,请参阅此答案(和其他主题):https://github.com/firebase/firebase-tools/issues/610#issuecomment-360147507
您必须更改 firebase.json
文件,如此处所示
"npm --prefix functions run lint"
"npm --prefix functions run build"
对于ubuntu你需要把firebase.json
改成下面的,注意RESOURCE_DIR
之前的$
{
"functions": {
"predeploy": [
"npm --prefix \"$RESOURCE_DIR\" run lint",
"npm --prefix \"$RESOURCE_DIR\" run build"
]
}
}
for Windows 10 你需要把firebase.json
n改成下面的,注意RESOURCE_DIR
前后的%
{
"functions": {
"predeploy": [
"npm --prefix \"%RESOURCE_DIR%\" run lint",
"npm --prefix \"%RESOURCE_DIR%\" run build"
]
}
}
更改以下内容:
npm --prefix \"$RESOURCE_DIR\" run lint
至
npm --prefix \"%RESOURCE_DIR%\" run lint
in firebase.json 主结构中的文件
{
"functions": {
"predeploy": [
"npm --prefix \"%RESOURCE_DIR%\" run lint"
],
"source": "functions"
}
}
在 windows 中,使用 firebase init
在 CLI 中初始化 firebase 项目时,在 firebase.json
文件中,将代码更改为如下所示 {
"functions": {
"predeploy": [
"npm --prefix \"%RESOURCE_DIR%\" run lint"
],
"source": "functions"
}
}
更改后,尝试 firebase deploy --only functions
命令。
(对于 Windows 不知道它是否适用于 ios)只需删除“预部署”下的所有内容:
它应该看起来像
"predeploy": [ ],
这对我有用,希望它也能解决你的问题
我找到了这个解决方案 here
在 firebase function getting started guide 之后尝试使用以下方法部署时出现看似简单的错误:
firebase deploy --only functions
i deploying functions
Running command: npm --prefix $RESOURCE_DIR run lint
npm ERR! path C:\Users\Beat\leginformant$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\Beat\leginformant$RESOURCE_DIR\package.json'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent
package.json 文件确实存在,正如我的 project/functions/package.json 中的教程所示。 尝试更改或打印出 RESOURCE_DIR env 但没有成功。假设它将在 NPM shell 环境中被限定。
npm 版本:5.6.0
节点版本:8.9.0
这是 Firebase CLI 3.17.0 至至少 3.17.3 的一个已知问题,但仅限于 Windows。您可以在您的机器上通过编辑项目根目录下的 firebase.json
并在您在那里看到的 npm 命令中将 $RESOURCE_DIR
替换为 %RESOURCE_DIR%
来修复此问题。前者是使用环境变量的 unix 语法方式,而后者是 Windows 命令 shell 语法。由于您使用的是 Windows,因此您需要使用 Windows 语法。
团队正在研究避免必须更改您使用的配置文件的方法,因为对于跨平台工作的团队来回更改同一个文件并不是很方便。
编辑:使用 CLI 版本 3.17.5 创建的项目应解决此问题。
作为额外的 npm --prefix %RESOURCE_DIR% 运行 lint 就像@Deji James 说的那样,让我取得了一些进步,但仍然没有奏效。
作为建议,我找到了这个 https://github.com/firebase/firebase-tools/issues/610
和@merlinnot 在这里说 嘿伙计们,你们在 firebase.json 的预部署中可能都有 sth,不是吗?如果不是那么重要,只需删除 你现在拥有的东西。
对我有用。 PS。在决定删除之前,我已经完成了所有重新安装、卸载的事情。只有这个有效。
当运行
firebase init functions
我用的是这个配置
? What language would you like to use to write Cloud Functions? JavaScript
//TypeScript doesn't work
? Do you want to use ESLint to catch probable bugs and enforce style? Yes
//If you don't you will get a missing file lint
? File functions/package.json already exists. Overwrite? Yes
? Do you want to install dependencies with npm now? Yes
//Why not
然后如果使用 windows
将 firebase.json
中的 $RESOURCE_DIR 替换为 %RESOURCE_DIR%您可以通过访问 firebase.json
文件并删除包含 RESOURCE_DIR
.
除其他建议外,如果您将 preflight/predeploy 命令更改为:
"npm --prefix \"$RESOURCE_DIR\" run lint", OR
"npm --prefix \"%RESOURCE_DIR%\" run lint"
到
"npm --prefix ./functions run lint"
问题似乎已解决。这也解决了 Windows 和 Linux.
的问题要查看更多详细信息,请参阅此答案(和其他主题):https://github.com/firebase/firebase-tools/issues/610#issuecomment-360147507
您必须更改 firebase.json
文件,如此处所示
"npm --prefix functions run lint"
"npm --prefix functions run build"
对于ubuntu你需要把firebase.json
改成下面的,注意RESOURCE_DIR
$
{
"functions": {
"predeploy": [
"npm --prefix \"$RESOURCE_DIR\" run lint",
"npm --prefix \"$RESOURCE_DIR\" run build"
]
}
}
for Windows 10 你需要把firebase.json
n改成下面的,注意RESOURCE_DIR
%
{
"functions": {
"predeploy": [
"npm --prefix \"%RESOURCE_DIR%\" run lint",
"npm --prefix \"%RESOURCE_DIR%\" run build"
]
}
}
更改以下内容:
npm --prefix \"$RESOURCE_DIR\" run lint
至
npm --prefix \"%RESOURCE_DIR%\" run lint
in firebase.json 主结构中的文件
{
"functions": {
"predeploy": [
"npm --prefix \"%RESOURCE_DIR%\" run lint"
],
"source": "functions"
}
}
在 windows 中,使用 firebase init
在 CLI 中初始化 firebase 项目时,在 firebase.json
文件中,将代码更改为如下所示 {
"functions": {
"predeploy": [
"npm --prefix \"%RESOURCE_DIR%\" run lint"
],
"source": "functions"
}
}
更改后,尝试 firebase deploy --only functions
命令。
(对于 Windows 不知道它是否适用于 ios)只需删除“预部署”下的所有内容: 它应该看起来像
"predeploy": [ ],
这对我有用,希望它也能解决你的问题 我找到了这个解决方案 here