本地我有一个npm模块,我用npm i --save ../shared/
安装在Firebase函数中。安装后,我在node_modules
中找到了一个文件夹,它是一个符号链接。我能够建立这个项目。到目前为止一切都很好!
但现在我无法部署Firebase功能。我在功能控制台中得到以下错误:
"消息":"生成失败:npm ERR!代码ENOENT\nnpm ERR!syscall打开\nnpm ERR!path/workspace/nod_modules/shared/package.json\nnpm ERR!错误号-2\nnpm ERR!enoent enoent:没有这样的文件或目录,打开'/workspace/nod_module/shared/package.json'\nnpm ERR!enont这与npm找不到文件有关。\nnpm ERR!enont\n\nnpm ERR!此运行的完整日志可在以下位置找到:\nnpm ERR/www data home/.npm/\logs/2021-12-20T11_02_22_672Z-debug.log;错误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
中找到它们。
但这也不起作用,因为我再次收到同样的错误消息。
"消息":"生成失败:npm ERR!代码ENOENT\nnpm ERR!syscall打开\nnpm ERR!path/workspace/nod_modules/shared/package.json\nnpm ERR!错误号-2\nnpm ERR!enoent enoent:没有这样的文件或目录,打开'/workspace/nod_module/shared/package.json'\nnpm ERR!enont这与npm找不到文件有关。\nnpm ERR!enont\n\nnpm ERR!此运行的完整日志可在以下位置找到:\nnpm ERR/www data home/.npm/\logs/2021-12-20T11_18_09_566Z-debug.log;错误ID:beaf8772";
你是怎么做到的?
在我的例子中,共享模块只包含类型。因此,作为变通方法,我将其发布到NPM,然后照常安装。
此解决方法有效!
https://docs.npmjs.com/cli/v8/commands/npm-publish
虽然我对这个解决方案并不满意,但目前它已经足够好了。我会尽快发布一个更好的解决方案。