节点无法在IIS中find模块,可以从提示中find

我通过npm install <module>安装了一些模块,当我在命令提示符下运行node时,我可以访问它们,但是当我使用iisnode在IIS下运行应用程序时,出现如下错误:

 Application has thrown an uncaught exception and is terminated: Error: Cannot find module 'formidable' at Function.Module._resolveFilename (module.js:338:15) at Function.Module._load (module.js:280:25) at Module.require (module.js:364:17) at require (module.js:380:17) at Object.<anonymous> (C:\Program Files\iisnode\www\helloworld\hello.js:3:18) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Module.require (module.js:364:17) 

到底是怎么回事? 如果我使用iisnode是否有另外一种方法来安装模块?

这是我的项目web.config文件:

 <configuration> <system.webServer> <!-- indicates that the hello.js file is a node.js application to be handled by the iisnode module --> <handlers> <add name="iisnode" path="hello.js" verb="*" modules="iisnode" /> </handlers> </system.webServer> </configuration> 

从npm 1.0开始,有两种安装方法:全局和本地。 在这里阅读文档。

全局安装(使用-g )用于您要在shell或命令行中使用的内容。

在本地安装软件包时,通过npm install onepackage ,它会将依赖项插入到package.json中,并将该库添加到目录node_modules 。 这主要是针对你想在程序中使用的包,使用require('onepackage')

看起来我发现了这个问题。 与我使用过的大多数软件包pipe理器不同, npm并不是全局安装,而只是安装时所在的文件夹。 我安装在正确的文件夹,它似乎工作。