我有一个firebase项目,其文件结构如下:
node_modules/
package.json
functions/
node_modules/
package.json如果我在父项目中使用npm install firebase,则一切都可以在本地正常工作,但代码在部署时会失败,因为子项目部署时没有父项目,但仍依赖于firebase
如果我在子项目中安装firebase,父应用程序会报告"Cannot find module 'firebase/storage'"
如果我在两个项目中都安装了firebase,父应用程序会报告"Cannot read 'path' of undefined" - debugging显示这是一个firebase内部错误
我理想的解决方案是只在子项目中使用npm install firebase,但以某种方式允许父项目访问它?这个是可能的吗?提亚
我读过关于npm-link的文章,但不确定这是否对我有帮助,或者是否有其他更合适的解决方案。
可选阅读:为什么我有这样的结构?
我最终得到了这个结构,因为子项目是一个firebase项目,而firebase init创建了functions文件夹及其内容。子项目被部署到google云。
父项目是我创建的一个简单的测试床应用程序,并使用子项目中的大部分代码仅用于测试目的,此代码未部署。
发布于 2021-10-20 12:01:56
从这里得到了答案:
how to specify local modules as npm package dependencies
我在父项目中运行了以下命令:
npm i --save ./functions/node_modules/firebase这将向父package.json添加一个条目,如下所示:
"firebase": "file:functions/node_modules/firebase"现在一切都正常了!
显然,这假设实际安装了子包。
首先在父package.json中使用preinstall脚本安装子程序包,以确保顺利工作。
我的preinstall脚本条目如下所示:
"preinstall": "sh preinstall.sh"脚本本身有以下内容:
#!/usr/bin/env bash
rm -rf node_modules
cd functions || exit
rm -rf node_modules
npm install --also=dev当您运行npm install时,预安装脚本会在实际安装之前自动执行。
https://stackoverflow.com/questions/69645271
复制相似问题