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的主要内容,如果未能解决你的问题,请参考以下文章