20

遵循firebase 功能入门指南并在尝试部署时遇到一个看似简单的错误:

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 环境但没有成功。假设它将在 NPM shell 环境中限定范围。

npm 版本:5.6.0

节点版本:8.9.0

4

9 回答 9

46

这是 Firebase CLI 3.17.0 到至少 3.17.3 的一个已知问题,但仅限于 Windows。firebase.json您可以通过在项目的根目录编辑并替换$RESOURCE_DIR%RESOURCE_DIR%在此处看到的 npm 命令来在您的计算机上修复此问题。前者是使用环境变量的 unix 语法方式,而后者是 Windows 命令 shell 语法。由于您使用的是 Windows,因此您需要使用 Windows 语法。

该团队正在寻找避免更改您使用的配置文件的方法,因为跨平台工作的团队来回更改同一文件并不方便。

编辑:使用 CLI 版本 3.17.5 创建的项目应修复此问题。

于 2018-01-21T19:23:42.637 回答
2

跑步时

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%

于 2018-03-05T13:02:27.193 回答
2

更改以下内容:

npm --prefix \"$RESOURCE_DIR\" run lint

npm --prefix \"%RESOURCE_DIR%\" run lint

在主结构的 firebase.json 文件中

{
  "functions": {
    "predeploy": [
      "npm --prefix \"%RESOURCE_DIR%\" run lint"
    ],
    "source": "functions"
  }
}
于 2018-10-22T11:49:50.740 回答
2

在 Windows 中,在使用 CLI 初始化 firebase 项目时firebase init,在firebase.json文件中,将代码更改为如下所示{ "functions": { "predeploy": [ "npm --prefix \"%RESOURCE_DIR%\" run lint" ], "source": "functions" } } 更改后,尝试firebase deploy --only functions命令。

于 2018-10-22T11:53:10.773 回答
1

您可以通过访问您的firebase.json文件并删除包含RESOURCE_DIR.

于 2018-07-07T14:58:26.163 回答
1

除了其他建议之外,如果您将 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

于 2018-09-02T16:18:51.713 回答
1

您必须更改firebase.json文件,如此处所示

"npm --prefix functions run lint"
"npm --prefix functions run build"
于 2018-09-13T09:40:51.510 回答
0

作为一个额外的 npm --prefix %RESOURCE_DIR% run lint 就像@Deji James 说的那样,让我取得了一些进步,但仍然没有奏效。

作为建议,我发现了这个 https://github.com/firebase/firebase-tools/issues/610

@merlinnot 在这里说嘿,伙计们,你们在 firebase.json 的预部署中可能都有一些东西,不是吗?如果不是那么重要,请删除您现在拥有的内容。

为我工作。PS。在决定删除之前,我已经做了所有重新安装的东西,卸载的东西。只有这个有效。

于 2018-02-20T17:36:19.203 回答
0

对于ubuntu,您需要更改firebase.json为以下,注意$之前RESOURCE_DIR

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

对于 Windows 10,您需要将firebase.jsonn 更改为以下,注意%之后和之前RESOURCE_DIR

{
  "functions": {
    "predeploy": [
      "npm --prefix \"%RESOURCE_DIR%\" run lint",
      "npm --prefix \"%RESOURCE_DIR%\" run build"
    ]
  }
}
于 2018-10-17T13:35:01.070 回答