2015-11-02 42 views
0

我有一个非常简单的脚本,用于测试此场景,但我无法弄清楚为什么Node无法加载本地安装的模块。在Windows中找不到本地安装的模块

的package.json:

{ 
    "name": "Test", 
    "version": "1.0.0", 
    "dependencies": { 
    "cli-progress-bar": "^0.1.0" 
    } 
} 

Test.js:

var ProgressBar = require("cli-progress-bar"), 
    progress = new ProgressBar(), 
    processed = 0; 

function update() { 
    if (processed < 100) { 
     progress.show(++processed/100); 
     setTimeout(update, 750); 
    } 
} 

update(); 

据我所知,这应该只是加载cli-progress-bar包,和之前运行一个简单的进度条完成退出。

这是输出我得到的,当我尝试安装的依赖关系和运行脚本:

C:\Users\Benjamin\Desktop\Test>node -v 
v4.2.1 

C:\Users\Benjamin\Desktop\Test>npm -v 
3.3.10 

C:\Users\Benjamin\Desktop\Test>npm install 
[email protected] C:\Users\Benjamin\Desktop\Test 
└─┬ [email protected] 
    ├── [email protected] 
    ├─┬ [email protected] 
    │ ├── [email protected] 
    │ └─┬ [email protected] 
    │ └── [email protected] 
    ├── [email protected] 
    └─┬ [email protected] 
    ├── [email protected] 
    └─┬ [email protected] 
     └─┬ [email protected] 
     ├── [email protected] 
     └── [email protected] 

npm WARN EPACKAGEJSON [email protected] No description 
npm WARN EPACKAGEJSON [email protected] No repository field. 
npm WARN EPACKAGEJSON [email protected] No license field. 

C:\Users\Benjamin\Desktop\Test>node Test.js 
module.js:339 
    throw err; 
    ^

Error: Cannot find module 'cli-progress-bar' 
    at Function.Module._resolveFilename (module.js:337:15) 
    at Function.Module._load (module.js:287:25) 
    at Module.require (module.js:366:17) 
    at require (module.js:385:17) 
    at Object.<anonymous> (C:\Users\Benjamin\Desktop\Test\Test.js:1:81) 
    at Module._compile (module.js:435:26) 
    at Object.Module._extensions..js (module.js:442:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:311:12) 
    at Function.Module.runMain (module.js:467:10) 

我可以看到,该软件包安装在C:\Users\Benjamin\Desktop\Test\node_modules但我似乎无法使用它。

C:\Users\Benjamin\Desktop\Test>dir node_modules 
Volume in drive C is OS 
Volume Serial Number is 7294-620F 

Directory of C:\Users\Benjamin\Desktop\Test\node_modules 

11/02/2015 10:00 AM <DIR>   . 
11/02/2015 10:00 AM <DIR>   .. 
11/02/2015 10:00 AM <DIR>   ansi-escapes 
11/02/2015 10:00 AM <DIR>   cli-character-set 
11/02/2015 10:00 AM <DIR>   cli-cursor 
11/02/2015 10:00 AM <DIR>   cli-progress-bar 
11/02/2015 10:00 AM <DIR>   exit-hook 
11/02/2015 10:00 AM <DIR>   lodash.padleft 
11/02/2015 10:00 AM <DIR>   lodash.padright 
11/02/2015 10:00 AM <DIR>   lodash.repeat 
11/02/2015 10:00 AM <DIR>   lodash._basetostring 
11/02/2015 10:00 AM <DIR>   lodash._createpadding 
11/02/2015 10:00 AM <DIR>   log-update 
11/02/2015 10:00 AM <DIR>   onetime 
11/02/2015 10:00 AM <DIR>   restore-cursor 
       0 File(s)    0 bytes 
       15 Dir(s) 283,532,754,944 bytes free 

C:\Users\Benjamin\Desktop\Test>npm ls 
[email protected] C:\Users\Benjamin\Desktop\Test 
└─┬ [email protected] 
    ├── [email protected] 
    ├─┬ [email protected] 
    │ ├── [email protected] 
    │ └─┬ [email protected] 
    │ └── [email protected] 
    ├── [email protected] 
    └─┬ [email protected] 
    ├── [email protected] 
    └─┬ [email protected] 
     └─┬ [email protected] 
     ├── [email protected] 
     └── [email protected] 

每次我尝试运行脚本时,都会得到相同的错误。

+0

我搜索了其他人有此问题,但我只能找到加载*全球*安装模块时遇到问题的人的问题。这肯定是在本地安装的。 – btleffler

+0

我不知道该从哪里开始。如果每个人都认为这是特定软件包的问题,​​我会在其Github存储库中打开一个问题。 – btleffler

+0

因此,测试脚本所在的目录中没有node_modules文件夹? –

回答

5

你无法找到名为“cli-progress-bar”的模块的原因是因为该模块没有正确暴露自身。 package.json文件有一个名为main的属性,它必须设置为从模块中导出的脚本的名称。如果脚本被称为index.js,npm会找到它,但是因为脚本被称为bar.js,而package.json文件则说主文件被称为index.js,它没有正确公开并且不能被require找到。

+0

哇,很好。谢谢!那么我会为那个包打开一个问题。 – btleffler

+0

没问题我已经做了PR [这里](https://github.com/gillesdemey/cli-progress-bar/pull/2)来解决问题 –

相关问题