ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Node.js使用本地依赖

2021-05-25 23:35:24  阅读:674  来源: 互联网

标签:Node npm 依赖 lodash ERR module js myproject 本地


最近项目组写了几个模块,打算采用依赖的方式来使用它们。

因为敏感性问题,不打算发布到npm官方仓库;自行搭建一个npm仓库成本也大。

所以最后决定采用本地安装。

即在package.json中填写如下:

  "dependencies": {
    "module_a": "../module_a"
  },

但是npm安装本地依赖,会有个bug。

比如现在有项目 myproject module_a module_b

myproject 依赖 module_a module_b
module_a 依赖 lodash(或者其他第三方依赖)
module_b 依赖 module_a lodash(或者其他第三方依赖)

那么在myproject执行npm i 的时候,会出现以下错误信息,无法安装成功

npm ERR! code ENOENT
npm ERR! syscall rename
npm ERR! path /home/guohaoyun/workspace/test_local_dependence/myproject/node_modules/.staging/lodash-09e8142d
npm ERR! dest /home/guohaoyun/workspace/test_local_dependence/module_a/node_modules/lodash
npm ERR! errno -2
npm ERR! enoent ENOENT: no such file or directory, rename '/home/guohaoyun/workspace/test_local_dependence/myproject/node_modules/.staging/lodash-09e8142d' -> '/home/guohaoyun/workspace/test_local_dependence/module_a/node_modules/lodash'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent
npm ERR! A complete log of this run can be found in:
npm ERR! /home/guohaoyun/.npm/_logs/2021-05-19T14_30_34_266Z-debug.log

这里有两种解决方案:

  1. 本地依赖一个个安装
    即在 myproject 一个个执行下面的指令
    npm i ../module_a
    npm i ../module_b

  2. 将 module_a module_b 打包
    执行 cd module_a && npm packcd module_b && npm pack

    生成
    module_a-1.0.0.tgz 和 module_b-1.0.0.tgz
    然后更改 myproject的package.json

      "dependencies": {
    	"module_a": "../module_a-1.0.0.tgz",
    	"module_b": "../module_b-1.0.0.tgz"
      }
    

    最后和平时一样,执行 npm i 即可

标签:Node,npm,依赖,lodash,ERR,module,js,myproject,本地
来源: https://www.cnblogs.com/blacklsle/p/14787684.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有