当我尝试部署我的Firebase云函数时,我得到以下错误。
所需行为:已成功部署函数。
错误:
错误:阅读函数/包.json时出错:
您访问的页面不存在,无法访问
完整日志:
名称@名称-MacBook-Pro功能% firebase部署
===正在部署到“newtiktok-21570”...
i部署函数运行命令:npm --前缀“$RESOURCE_DIR”运行lint
函数@ lint /用户/名称/桌面/Yoveo/函数eslint“src/**/*”
/用户/名称/桌面/Yoveo/功能/源代码/index.ts
186:67警告“时间戳”已定义但从未使用
@typescript-eslint/no-unused-vars 377:86警告'mediaNum'已定义但从未使用@typescript-eslint/no-unused-vars 377:104警告'commentText'已定义但从未使用@typescript-eslint/no-unused-vars 377:125警告'commentID'已定义但从未使用@typescript-eslint/no-unused-vars 419:119警告'commentID'已定义但从未使用
@typescript-eslint/没有未使用的变量463:121警告“commentID”已定义但从未使用@typescript-eslint/没有未使用的变量520:75
警告'mediaNum'已定义但从未使用
@typescript-eslint/no-unused-vars 732:25警告“slap”已定义但从未使用@typescript-eslint/no-unused-vars
8个问题(0个错误,8个警告)
正在运行命令:npm --前缀“$RESOURCE_DIR”运行构建⇒函数:已完成执行预先部署指令码。
错误:阅读函数/包.json时出错:
我的P· Json :
{
"name": "functions",
"scripts": {
"lint": "eslint \"src/**/*\"",
"build": "",
"serve": "npm run build && firebase emulators:start --only functions",
"shell": "npm run build && firebase functions:shell",
"start": "npm run shell",
"deploy": "firebase deploy --only functions",
"logs": "firebase functions:log"
},
"engines": {
"node": "12"
},
"main": "lib/index.js",
"dependencies": {
"firebase-admin": "^9.2.0",
"firebase-functions": "^3.11.0"
},
"devDependencies": {
"@typescript-eslint/eslint-plugin": "^4.8.1",
"@typescript-eslint/parser": "^4.8.1",
"eslint": "^7.14.0",
"eslint-plugin-import": "^2.22.0",
"firebase-functions-test": "^0.2.0",
"typescript": "^3.8.0"
},
"private": true
}
8条答案
按热度按时间hlswsv351#
cd到你的函数文件夹并运行这个命令
npm运行脚本构建
这将创建缺少的lib/index.js文件
ymdaylpp2#
firebase使用
package.json
中的main
字段作为程序入口点,正确设置它,可能如下所示。b4qexyjb3#
由于某种原因,最近firebase函数的构建流程发生了变化。
它曾经是:
现在是:
我还没有研究是什么导致了这个变化,但是添加这个作为构建步骤为我解决了这个问题。
nszi6y054#
您访问的页面不存在
如果您正在处理的firebase项目包含一个前端或者是一个monorepo结构,**这个错误也可能是由于在项目的
functions
后端部分意外地导入了一个前端文件。**对于所有不在您的函数项目范围内的文件,typescript编译器将拒绝编译引用它们的ts文件。所以在这种情况下,解决方案是搜索任何包含/src/
的导入(或任何其他指向外部的路径),并在functions
项目中删除(或更正)它们。sf6xfgos5#
您只需将package.json文件中的主文件从lib/index.js更改为索引文件(通常位于src文件夹下)
fzwojiic6#
已解决:
我可以通过删除与Firebase函数相关的所有内容来解决这个问题。并运行:
firebase init
。在我cd functions
之后运行npm install
。然后我能够在修复错误后成功部署:cyvaqqii7#
将firebase.json文件更改为以下内容修复了我的问题:
kq4fsx7k8#
我能够通过遵循Felix K适应症修复相同问题,并于2021年4月28日回复。
如果你正在处理的firebase项目包含一个前端或者是一个monorepo结构,这个错误也可能是因为在项目的函数后端部分不小心导入了一个前端文件。对于所有不在函数项目范围内的文件,typescript编译器将拒绝编译引用它们的ts文件。所以在这种情况下,解决方案是搜索任何包含/src/(或任何其他指向外部的路径)的导入,并在函数项目中删除(或更正)它们。
在我的例子中,我不小心从前端导入了一个接口。当更新这个导入时,我能够成功地部署我的函数。
来自Edward Amoah Idun的解决方案:
cd到你的函数文件夹并运行这个命令
npm运行脚本构建
这将创建缺少的lib/index.js文件
是的,但它会创建index.js文件,该文件在错误的文件夹中丢失。仍有必要检查您没有从其他项目导入。