functions/lib/functions/src/index.ts 不存在,无法部署 Cloud Functions
Posted
技术标签:
【中文标题】functions/lib/functions/src/index.ts 不存在,无法部署 Cloud Functions【英文标题】:functions/lib/functions/src/index.ts does not exist, can't deploy Cloud Functions 【发布时间】:2021-03-05 17:13:06 【问题描述】:当我尝试部署 Firebase 云功能时,我收到以下错误。
期望的行为:成功部署函数。
错误:
错误:读取functions/package.json时出错:
functions/lib/index.js 不存在,无法部署 云函数
完整日志:
name@name-MacBook-Pro 函数 % firebase 部署
=== 正在部署到“newtiktok-21570”...
i 部署函数运行命令:npm --prefix "$RESOURCE_DIR" 运行 lint
functions@lint /Users/name/Desktop/Yoveo/functions eslint "src/**/*"
/Users/name/Desktop/Yoveo/functions/src/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/no-unused-vars 463:121 警告 'commentID' 是 已定义但从未使用过 @typescript-eslint/no-unused-vars 520:75 警告“mediaNum”已定义但从未使用过 @typescript-eslint/no-unused-vars 732:25 警告 'slap' 是 已定义但从未使用过 @typescript-eslint/no-unused-vars
✖ 8 个问题(0 个错误,8 个警告)
运行命令:npm --prefix "$RESOURCE_DIR" run build ✔ 函数: 已完成运行预部署脚本。
错误:读取functions/package.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
【问题讨论】:
请查看此Official Documentation。请从 functions 文件夹执行 npm install 并再次部署。你能分享你的目录结构吗?另请查看 Firebase 官方 Documentation。 【参考方案1】:最近由于某种原因,firebase 函数的构建流程发生了变化。
以前是:
npm --prefix ./functions install ./functions
firebase deploy --only functions
现在是:
npm --prefix ./functions install ./functions
npm --prefix ./functions run build
firebase deploy --only functions
我尚未研究导致此更改的原因,但将其添加为构建步骤解决了我的问题。
【讨论】:
【参考方案2】:functions/lib/index.js 不存在
如果您在包含前端或结构为 monorepo 的 firebase 项目中工作,此错误也可能源于在项目的 functions
后端部分中意外导入了前端文件。 由于这些文件不在您的 funcions 项目范围内,因此 typescript 编译器不会编译引用它们的 ts 文件。因此,在这种情况下,解决方案是搜索包含 /src/
(或指向外部的任何其他路径)的任何导入,并在您的 functions
项目中删除它们。
【讨论】:
【参考方案3】:firebase 使用package.json
中的main
字段作为程序入口点,
正确设置,大概这样。
"main": "lib/src/index.js",
【讨论】:
【参考方案4】:已解决:
我能够通过删除与 Firebase 函数相关的所有内容来解决问题。并再次运行:firebase init
。在我cd functions
运行npm install
之后。然后我在修复错误后能够成功部署:
3:26 error 'express' should be listed in the project's dependencies. Run 'npm i -S express' to add it import/no-extraneous-dependencies
【讨论】:
【参考方案5】:您只需将 package.json 中的 main 文件从 lib/index.js 更改为通常位于 src 文件夹下的索引文件
【讨论】:
以上是关于functions/lib/functions/src/index.ts 不存在,无法部署 Cloud Functions的主要内容,如果未能解决你的问题,请参考以下文章