在Windows中找不到本地安装的模块
我有一个非常简单的脚本,用于测试此场景,但我无法弄清楚为什么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]
每次我尝试运行脚本时,都会得到相同的错误。
你无法找到名为“cli-progress-bar”的模块的原因是因为该模块没有正确暴露自身。 package.json文件有一个名为main的属性,它必须设置为从模块中导出的脚本的名称。如果脚本被称为index.js,npm会找到它,但是因为脚本被称为bar.js,而package.json文件则说主文件被称为index.js,它没有正确公开并且不能被require找到。
哇,很好。谢谢!那么我会为那个包打开一个问题。 – btleffler
没问题我已经做了PR [这里](https://github.com/gillesdemey/cli-progress-bar/pull/2)来解决问题 –
我搜索了其他人有此问题,但我只能找到加载*全球*安装模块时遇到问题的人的问题。这肯定是在本地安装的。 – btleffler
我不知道该从哪里开始。如果每个人都认为这是特定软件包的问题,我会在其Github存储库中打开一个问题。 – btleffler
因此,测试脚本所在的目录中没有node_modules文件夹? –