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