为什么 Firebase 不部署本地模块?

Why does Firebase not deploy local module?

在本地我有一个 npm 模块,我使用 npm i --save ../shared/ 在 Firebase 函数中安装了它。安装后,我在 node_modules 中找到文件夹,这是一个符号 link。我能够构建项目。到目前为止一切顺利!

但是现在无法部署Firebase功能。我在 Functions 控制台中收到以下错误:

"message": "Build failed: npm ERR! code ENOENT\nnpm ERR! syscall open\nnpm ERR! path /workspace/node_modules/shared/package.json\nnpm ERR! errno -2\nnpm ERR! enoent ENOENT: no such file or directory, open '/workspace/node_modules/shared/package.json'\nnpm ERR! enoent This is related to npm not being able to find a file.\nnpm ERR! enoent \n\nnpm ERR! A complete log of this run can be found in:\nnpm ERR! /www-data-home/.npm/_logs/2021-12-20T11_02_22_672Z-debug.log; Error ID: beaf8772"

可能 Firebase 没有部署符号文件夹?在 firebase.json 中,我更新了预部署命令以删除符号文件夹并复制它:

"predeploy": [
  "rm -r \"$RESOURCE_DIR\"/node_modules/shared",
  "mkdir \"$RESOURCE_DIR\"/node_modules/shared",
  "cp -r ./shared/. \"$RESOURCE_DIR\"/node_modules/shared",
  "npm --prefix \"$RESOURCE_DIR\" run build"
]

这些命令会删除符号文件夹并复制文件。我在 node_modules.

中找到它们

但这也不起作用,因为我再次收到相同的错误消息。

"message": "Build failed: npm ERR! code ENOENT\nnpm ERR! syscall open\nnpm ERR! path /workspace/node_modules/shared/package.json\nnpm ERR! errno -2\nnpm ERR! enoent ENOENT: no such file or directory, open '/workspace/node_modules/shared/package.json'\nnpm ERR! enoent This is related to npm not being able to find a file.\nnpm ERR! enoent \n\nnpm ERR! A complete log of this run can be found in:\nnpm ERR! /www-data-home/.npm/_logs/2021-12-20T11_18_09_566Z-debug.log; Error ID: beaf8772"

你是怎么做到的?

在我的例子中,共享模块只包含类型。因此,作为解决方法,我将其发布到 NPM,然后照常安装。

此解决方法有效!

https://docs.npmjs.com/cli/v8/commands/npm-publish

虽然我对这个解决方案不是很满意,但目前已经足够好了。我会尽快 post 更好的解决方案。