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

在类似于这个问题的情况下,我用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语句中的path时,一切正常:

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

升级npm。

您的问题是require()不search.npm文件夹。

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

如果你在windows上使用:

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