Node-RED无法找到本地模块:Nx monorepo自定义节点依赖解析问题
解决方法
方案1:使用npm link建立本地包关联
这是适配monorepo本地开发的最优方式,通过软链接让Node-RED直接引用编译后的本地包:
- 进入
reponame/dist/packages/package-a目录,执行:npm link - 进入
reponame/dist/packages/package-b目录,先关联依赖的package-a,再link自身:npm link @reponame/package-a npm link - 进入
reponame/dist/packages/custom-node目录,关联依赖的package-b,再link自身:npm link @reponame/package-b npm link - 最后进入你的Node-RED根目录,执行:
npm link @reponame/custom-node
启动Node-RED后即可正确解析所有本地依赖,后续重新编译monorepo包时,Node-RED会自动加载更新后的代码。
方案2:在Node-RED的package.json中指定本地包路径
如果不想用软链接,可直接在Node-RED的package.json里添加所有本地包的文件依赖:
{ "dependencies": { "@reponame/package-a": "file:../reponame/dist/packages/package-a", "@reponame/package-b": "file:../reponame/dist/packages/package-b", "@reponame/custom-node": "file:../reponame/dist/packages/custom-node" } }
然后在Node-RED目录执行npm install,npm会把这些本地包复制到node_modules目录,并自动处理包之间的依赖关系。
失败原因说明
你直接安装custom-node的dist包时,它的package.json里依赖的@reponame/package-b是npm仓库的包名,而非本地路径,因此npm会尝试从网络拉取,自然找不到你本地的monorepo包。以上两种方法都是让npm明确这些包的本地位置,从而正确解析依赖。
内容的提问来源于stack exchange,提问作者benicamera
相关产品推荐
相关产品推荐

