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

因为敏感性问题,不打算发布到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.js使用本地依赖的更多相关文章

  1. Node.js自动本地重启服务器

    node.js在本地项目中,更新 了代码 是不会自动刷新 的,要重启才能生效,每次更改代码又手动重启这样很麻烦. 可以安装 个supervisor.全局安装supervisor npm install ...

  2. node.js连接本地数据库及json返回数据

    新建一个文件夹node.js,目录下打开命令初始化一下 cnpm init 然后下载express框架 cnpm install express --save 接着下载数据库的依赖 cnpm inst ...

  3. Node.js的循环依赖

    我们知道在实际编程过程中,要尽可能的减少或者规避循环依赖情况的发生.但在现实环境中,有时却不得不产生循环依赖.Node.js不提倡使用循环依赖,但真有如此情况发生时Node.js也有办法解决.这篇博文 ...

  4. 【node.js】本地模式安装express:'express' 不是内部或外部命令,也不是可运行的程序或批处理文件。

    今天闲来无事想起了node.js,因此到网上下载了一个node.js的安装程序进行安装.其中: 安装程序:node-v0.11.13-x64.msi PC系统:Windows 7 自定义安装路径:D: ...

  5. Node.js之循环依赖

    在Node.js中有可能会出现循环依赖的问题,在此做一个简单的记录 假如有一个模块A: exports.loaded = false; const b = require('./b'); module ...

  6. 用node.js搭建本地服务器

    我的第一篇笔记来写写node.js,我对node.js的并不是很了解,基本的项目路径变换还是会的.原先我下载node.js就是我想学vue.js,后来因为工作的繁忙搁浅了我的计划.最近在学习phase ...

  7. Node.js创建本地简易服务器

    创建简易的本地服务器 安装node.js 在项目下,通过npm init -y创建package.json文件 通过npm install mime --save加载mime插件 创建server.j ...

  8. Node.js包的依赖及版本号(转)

    原文:  http://www.cnphp6.com/archives/64130 Node.js最重要的一个文件就是package.json,其中的配置参数决定了功能.例如下面就是一个例子 { &q ...

  9. 对Node.js 中的依赖管理的研究-----------------引用

    nodejs依赖:  dependencies   devDependencies   peerDependencies  bundledDependencies  optionalDependenc ...

随机推荐

  1. Metasploit Framework(MSF)的使用

    目录 Metasploit 安装Metasploit 漏洞利用(exploit) 攻击载荷(payload) Meterpreter MS17_010(永恒之蓝) 辅助模块(探测模块) 漏洞利用模块 ...

  2. XCTF-unfinish

    unfinish 之前做过这个题,这是之前写的WP:链接

  3. Access+Mssql+Oracle数据库注入

    Access数据库注入 前言:在常见的注入测试中,由于每个数据库内置架构和应用不同,导致数据库类型将决定注入的手法,Access数据库是小型数据库类型,普遍用于小型WEB应用,其中Access注入手法 ...

  4. helium的浏览器启动及option配置 - 1

    helium的浏览器启动及option配置 前言 helium只支持chrome和firefox两个浏览器,其中option配置是基于selelium来配置的,所以所调用的也是seleium的配置方式 ...

  5. 『居善地』接口测试 — 3、Requests库介绍

    目录 1.Requests库 2.Requests库文档 3.Requests库安装 4.Requests库的使用 (1)使用步骤 (2)示例练习 5.补充:Json数据和Python对象互相转化 1 ...

  6. STL实现的底层数据结构简介

    STL实现的底层数据结构简介 C++ STL 的实现: 1.vector  底层数据结构为数组 ,支持快速随机访问 2.list    底层数据结构为双向链表,支持快速增删 3.deque   底层数 ...

  7. CentOS 7 vs. CentOS 8 版本差异大比拼

    CentOS 7 vs. CentOS 8 版本差異大比拼 2020-02-14 CentOS 最近剛好在撰寫課鋼,必須要以最新的 CentOS 8 版本為主,剛好來做一下 CentOS 7 和 Ce ...

  8. GB 18030-2000《信息技术信息交换用汉字编码字符集基本集的扩充

    中文编码:GB2312编码.GBK编码.GB18030编码 2016-09-01 0 By ADMIN 一.GB 2312编码 中华人民共和国国家标准简体中文字符集,全称<信息交换用汉字编码字符 ...

  9. Linux权限问题(2)-unzip引发的权限问题

    背景:依然是上一个朋友,在用php调用unzip命令时,再次出现了权限被拒绝的问题. Notice:此处描述的问题,为使用php命令行执行php文件,因此进程属主为登录的用户,而不是nginx用户. ...

  10. 基于 IntersectionObserver 实现一个组件的曝光监控

    我们在产品推广过程中,经常需要判断用户是否对某个模块感兴趣.那么就需要获取该模块的曝光量和用户对该模块的点击量,若点击量/曝光量越高,说明该模块越有吸引力. 那么如何知道模块对用户是否曝光了呢?之前我 ...