Node无法在IIS中找到模块,可以从提示中找到

时间:2014-04-14 05:27:51

标签: node.js iis module npm iisnode

我已经通过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> 

2 个答案:

答案 0 :(得分:1)

从npm 1.0开始,有两种安装方式:全球和全球本地。阅读文档here

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

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

答案 1 :(得分:0)

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