Node.js使用本地依賴


最近項目組寫了幾個模塊,打算采用依賴的方式來使用它們。

因為敏感性問題,不打算發布到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 即可


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM