Firebase 功能部署问题:在 %RESOURCE_DIR% 中找不到 package.json

Posted

技术标签:

【中文标题】Firebase 功能部署问题:在 %RESOURCE_DIR% 中找不到 package.json【英文标题】:Firebase Function Deployment issue: package.json not found in %RESOURCE_DIR% 【发布时间】:2018-11-26 11:38:40 【问题描述】:

我在部署 Firebase Cloud Functions 时遇到问题。

复制步骤

firebase 初始化 仅选择函数 选择 Firebase 项目 选择javascript 使用 ESLint 现在使用 npm 安装依赖项 运行 firebase deploy

预期结果

期待 firebase-tools 部署云功能。

实际结果

收到以下错误信息:

λ firebase deploy

=== Deploying to '<projects>'...

i  deploying functions
Running command: npm --prefix "$RESOURCE_DIR" run lint
npm ERR! path ...path\firebaseFunction\%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 '...path\firebaseFunction\%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!     ...path\AppData\Roaming\npm-cache\_logs\2018-06-17T10_02_45_577Z-debug.log

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

我已经尝试用谷歌搜索它并按照以下链接上的解决方案进行操作,但它对我不起作用: https://github.com/firebase/firebase-tools/issues/610

请帮忙!

谢谢。

【问题讨论】:

【参考方案1】:

您似乎正在使用旧版本的 Firebase CLI,或者使用旧版本初始化的项目。最干净的做法是升级您的 CLI:

npm install -g firebase-tools

并使用firebase init 从头开始​​创建一个全新的项目。然后,使用旧项目中的代码重新构建您的新项目。

【讨论】:

【参考方案2】:

尝试在“firebase.json”文件中将字符串"$RESOURCE_DIR" 替换为"%RESOURCE_DIR%"

现在再次运行部署命令。它对我有用。

说明:此修复适用于 Windows,因为 %RESOURCE_DIR% 将仅被 Windows 命令行解释器识别为环境变量。最终结果是,该项目不再是跨平台的,正如similar question 的答案中所述。

【讨论】:

非常感谢,刚刚成功!你知道这有什么特别的原因吗?这是因为 DOS 和 *nix 中的文件引用不同吗? 是的,Dos 中的变量以 % 开头,而对于 *nix,它们以 $ 开头。【参考方案3】:

1.在firebase.json文件中

尝试将$RESOURCE_DIR替换为%RESOURCE_DIR%

"npm --prefix $RESOURCE_DIR run lint" to "npm --prefix %RESOURCE_DIR% run lint"

(上面的刚刚解决了)

2. npm install -g git://github.com/firebase/firebase-tools#master

请在您的项目文件夹中再次尝试此安装,它应该可以解决问题

【讨论】:

【参考方案4】:

我遇到了同样的问题,只需从 firebase.json 文件中删除预部署,它就可以正常工作了

【讨论】:

【参考方案5】:

第一步:打开 firebase.json 你会看到这个 JSON 文件

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

Step2:删除“npm --prefix \"$RESOURCE_DIR\" run lint",和"npm --prefix \"$RESOURCE_DIR\" run build"

"functions": "predeploy": []

现在部署,它工作正常

【讨论】:

【参考方案6】:

解决方案

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

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

【讨论】:

【参考方案7】:

我已经尝试了上述所有解决方案,但仍然无法正常工作@firebase

【讨论】:

以上是关于Firebase 功能部署问题:在 %RESOURCE_DIR% 中找不到 package.json的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Firebase 云功能中部署 PubSub 功能

我在提供或部署 Firebase 托管功能时遇到问题

部署 Firebase 推送通知功能时出错

Firebase 功能部署问题:在 %RESOURCE_DIR% 中找不到 package.json

Firebase Cloud 功能部署错误

Typescript 中的 React + Firebase 云功能无法部署