找不到模块'winston'

时间:2013-10-15 16:36:37

标签: javascript node.js npm winston

我写了一个小模块,用winston记录东西。

我使用了sudo npm install -g winston(它是在vm上......所以我不太关心sudo等等。

从npm登录:

winston@0.7.2 /usr/local/lib/node_modules/winston
├── cycle@1.0.2
├── stack-trace@0.0.7
├── eyes@0.1.8
├── colors@0.6.2
├── async@0.2.9
├── pkginfo@0.3.0
└── request@2.16.6 (forever-agent@0.2.0, aws-sign@0.2.0, tunnel-agent@0.2.0, oauth-sign@0.2.0, json-stringify-safe@3.0.0, cookie-jar@0.2.0, node-uuid@1.4.1, mime@1.2.11, qs@0.5.6, hawk@0.10.2, form-data@0.0.10)

当我尝试在节点中运行我的模块时,我得到:

Error: Cannot find module 'winston'
    at Function.Module._resolveFilename (module.js:331:15)
    at Function.Module._load (module.js:273:25)
    at Module.require (module.js:357:17)
    at require (module.js:373:17)
    at Object.<anonymous> (/home/name/Code/neon/neon-js-spike/logger.js:2:9)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:349:32)
    at Function.Module._load (module.js:305:12)
    at Module.require (module.js:357:17)

系统版本: Ubuntu的 node -v = v0.11.7-pre npm -v = 1.3.8

P.S。我在我的家用笔记本电脑(另一个ubuntu vm)上试过这个并且工作了。

4 个答案:

答案 0 :(得分:6)

您可能需要export NODE_PATH=/usr/local/lib/node_modules,其中/usr/local/lib/node_modules是全局安装节点模块的路径。

答案 1 :(得分:5)

如果设置类路径的建议不起作用,则可能需要使用npm链接。请参阅:http://blog.nodejs.org/2011/04/06/npm-1-0-link/

对于winston,请转到脚本的根文件夹并使用命令:

npm link winston

答案 2 :(得分:0)

一般来说,缺少模块应该通过设置NODE_PATH来解决,因为@fakewaffle说。假设它们当然已安装。

但对于winston,这对我不起作用。出于某种原因,我不得不更新文件权限:

chmod o+rx -R /pathto/node_modules/winston

我不知道为什么权限设置不正确。这个解决方案适用于Ubuntu,可能适用于其他Linux但不适用于Windows。

答案 3 :(得分:0)

npm WARN winston-daily-rotate-file@3.2.3需要一个winston @ ^ 2的对等项|| ^ 3,但未安装。您必须自己安装对等依赖项。

并且我已删除了node_modules文件夹 并使 npm install 成为依赖项。 有效

注意:在删除具有package.json的文件之前先进行检查

“ winston”:“ ^ 2.4.1”,  “ winston-daily-rotate-file”:“ ^ 3.0.0”