在节点中,为什么require()无法找到我刚刚用npm安装的模块?

时间:2011-11-14 02:51:23

标签: node.js npm

在与this problem,类似的情况下,我安装了一个带npm的模块,但是require('module')找不到它。

my-machine:projectname me$ npm install express-csrf
npm info it worked if it ends with ok
npm info version 0.2.1
npm info install express-csrf@0.3.3
npm info activate express-csrf@0.3.3
npm info build Success: express-csrf@0.3.3
npm ok

到目前为止,这么好。但是......然后......

my-machine:projectname me$ node
> require('express-csrf')
Error: Cannot find module 'express-csrf'
at Function._resolveFilename (module.js:317:11)
at Function._load (module.js:262:25)
at require (module.js:346:19)
at [object Context]:1:1
at Interface.<anonymous> (repl.js:171:22)
at Interface.emit (events.js:64:17)
at Interface._onLine (readline.js:153:10)
at Interface._line (readline.js:408:8)
at Interface._ttyWrite (readline.js:585:14)
at ReadStream.<anonymous> (readline.js:73:12)

npm说包裹在那里:

my-machine:projectname me$ npm ls express-csrf
npm info it worked if it ends with ok
npm info version 0.2.1
express-csrf@0.3.3             active installed
npm ok

请注意,新模块不会出现在/ usr / local / lib / node目录中,但会出现在/usr/local/lib/node/.npm

下面。
my-machine:projectname me$ ls /usr/local/lib/node/express-csrf*
ls: /usr/local/lib/node/express-csrf*: No such file or directory
my-machine:projectname me$ ls /usr/local/lib/node/.npm/express-csrf*
0.3.3   active

更新:我应该提一下,当我完全符合require语句中的路径时,一切都有效:

require('/usr/local/lib/node/.npm/express-csrf/active/package/index.js')

2 个答案:

答案 0 :(得分:2)

升级npm。

你的问题是require()没有搜索.npm文件夹。

您可以通过升级npm来解决此问题,以便将文件放在正确的位置。或者,您可以手动将模块安装在项目根目录中的文件夹中,并且需要('../ mymodule')

答案 1 :(得分:0)

如果你在Windows上使用:

export NODE_PATH="C:\Users\IMarek\AppData\Roaming\npm\node_modules"