npm:找不到node_modules中存在的模块

时间:2017-11-04 22:17:39

标签: node.js npm

Say JS应用程序A导入几个公共npm模块。说B就是这样一个模块。

// ./A/index.js
import B from B;

我去./node_modules/B并通过在B的package.json中添加一个新的依赖来修改它的来源,比如C,我在B中导入

// ./node_modules/B/index.js
import C from C;

然后我在./node_modules/B中运行npm install,它在./node_modules/B

中创建另一个node_modules目录

当我运行A时,我收到类似

的错误
Error: Could not find module C imported from B

我做错了什么? 在我将它们包装成PR之前,测试现有公共模块更改的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

你做对了,可能模块C不存在,你有两种方法,第一种是你现在的方式(在node_modules里面安装),第二种:使用require.resolve,查看下面的示例

在node_modules

中安装时的示例演示

index.js

import yn from 'yn'; // sample lib for detecting yes/no
console.log(yn('yes'));

./ node_modules / yn /

中运行
npm install ccount --save //sample lib for counting symbols

./ node_modules /炔/ index.js

//.. omitted
const ccount = require('ccount');
console.log(ccount('123', '1'));
//.. omitted

结果

❯ node ./index.js 
1
true

在当前目录

中安装时的示例演示

index.js

import yn from 'yn'; // sample lib for detecting yes/no
console.log(yn('yes'));

在根目录下运行(其中./index.js为)

npm install ccount --save //sample lib for counting symbols

./ node_modules /炔/ index.js

//.. omitted
const ccount = require(require.resolve('ccount', {paths: ['../../node_modules/ccount']}));
console.log(ccount('123', '1'));
//.. omitted

结果

❯ node ./index.js 
1
true