首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >父节点项目可以使用嵌套节点项目中的包吗?

父节点项目可以使用嵌套节点项目中的包吗?
EN

Stack Overflow用户
提问于 2021-10-20 11:37:22
回答 1查看 32关注 0票数 0

我有一个firebase项目,其文件结构如下:

代码语言:javascript
复制
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云。

父项目是我创建的一个简单的测试床应用程序,并使用子项目中的大部分代码仅用于测试目的,此代码未部署。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-20 12:01:56

从这里得到了答案:

how to specify local modules as npm package dependencies

我在父项目中运行了以下命令:

代码语言:javascript
复制
npm i --save ./functions/node_modules/firebase

这将向父package.json添加一个条目,如下所示:

代码语言:javascript
复制
"firebase": "file:functions/node_modules/firebase"

现在一切都正常了!

显然,这假设实际安装了子包。

首先在父package.json中使用preinstall脚本安装子程序包,以确保顺利工作。

我的preinstall脚本条目如下所示:

代码语言:javascript
复制
"preinstall": "sh preinstall.sh"

脚本本身有以下内容:

代码语言:javascript
复制
#!/usr/bin/env bash

rm -rf node_modules

cd functions || exit

rm -rf node_modules
npm install --also=dev

当您运行npm install时,预安装脚本会在实际安装之前自动执行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69645271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档