云函数在 Windows 上的 lint 期间部署错误:"enoent ENOENT: no such file or directory"



按照 Firebase 函数入门指南进行操作,并在尝试使用以下命令进行部署时遇到看似简单的错误:

firebase deploy --only functions
i  deploying functions
Running command: npm --prefix $RESOURCE_DIR run lint
npm ERR! path C:UsersBeatleginformant$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:UsersBeatleginformant$RESOURCE_DIRpackage.json'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent

package.json 文件确实存在,就像教程在我的项目/functions/package.json 中显示的那样。尝试更改或打印出RESOURCE_DIR环境,但没有成功。假设它将在 NPM 外壳环境中发挥作用。

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 命令外壳语法。 由于您使用的是Windows,因此需要使用Windows语法。

该团队正在寻找方法来防止必须对您使用的配置文件进行更改,因为对于跨平台工作的团队来说,来回更改同一文件并不方便。

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

运行时

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

然后如果使用窗口

在 firebase.json 中将 $RESOURCE_DIR 替换为 %RESOURCE_DIR%

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

更改以下内容:

npm --prefix "$RESOURCE_DIR" run lint

npm --prefix "%RESOURCE_DIR%" run lint

在主结构中的 Firebase.json 文件中

{
  "functions": {
    "predeploy": [
      "npm --prefix "%RESOURCE_DIR%" run lint"
    ],
    "source": "functions"
  }
}
您可以通过

访问firebase.json文件并删除包含RESOURCE_DIR的行来解决此问题。

除了其他建议之外,如果将印前检查/预部署命令从:

"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"

作为一个额外的做 npm --前缀 %RESOURCE_DIR% 像詹姆斯说@Deji运行 lint,让我取得了一些进展,但仍然不起作用。

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

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

为我工作。在决定删除之前,我已经完成了所有重新安装的事情,卸载了东西。只有这样才有效。

对于 ubuntu,您需要将firebase.json更改为以下,请注意$,然后再RESOURCE_DIR

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

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

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

(对于Windows,不知道它是否在ios中工作(只需删除"预部署"下的所有内容:它应该看起来像

"预部署":[ ],

这项工作对我来说

希望它也能解决你的问题我在这里找到这个解决方案

相关内容

  • 没有找到相关文章

最新更新