我已经通过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>
答案 0 :(得分:1)
从npm 1.0开始,有两种安装方式:全球和全球本地。阅读文档here。
全局安装(使用-g
),用于在shell或命令行中使用的内容。
当您通过npm install onepackage
在本地安装软件包时,它会将依赖项插入到package.json中,并在目录node_modules
下添加该库。这主要是针对您要在程序中使用的程序包,使用require('onepackage')
。
答案 1 :(得分:0)
看起来我发现了问题。与我使用的大多数软件包管理器不同,npm
不会全局安装,而只安装到您安装时所在的文件夹。我安装在正确的文件夹中,它似乎正在工作。