21

尝试使用任何全局模块时出现错误,例如:

Error: Cannot find module 'express'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:362:17)
    at require (module.js:378:17)
    at Object.<anonymous> (C:\BitNami\wappstack\...\test\app.js)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.runMain (module.js:492:10)

我安装了 express 命令:

npm install -g express

我的 app.js:

var express = require('express');

并使用 windows powershell 或 node.js 命令提示符窗口运行它:

node app.js

真的不知道怎么回事,我在windows中看了一些关于环境变量的东西,可以这样吗?

已解决/更新

问题是:没有为 npm 文件夹配置 Windows 环境变量。搜索您的 npm 文件夹并在环境变量中添加路径。

4

5 回答 5

15

只是从这里引用:

https://www.npmjs.org/doc/files/npm-folders.html

  • 如果您要 require() 它,请在本地安装它。
  • 如果要在命令行上运行它,请全局安装它。
  • 如果两者都需要,则在两个地方都安装它,或者使用npm link
于 2014-10-17T07:47:48.757 回答
13

您应该在本地安装 Express:

npm install express

然后像你一样要求它:

var express = require('express')
于 2014-04-17T17:38:50.153 回答
13

我在 Windows7/x64 上遇到了同样的错误,在环境变量中添加以下内容解决了这个问题:

NODE_PATH=C:\Users\[USERNAME]\AppData\Roaming\npm\node_modules

*将 [USERNAME] 替换为您的实际系统用户名

于 2014-10-21T06:31:02.007 回答
4

我在 Linux 中工作,但是当我需要 express 时,我使用的是安装位置的相对路径,并且工作正常:

var express = require('./public/node_modules/express');

我确信同样的事情也适用于 Windows 路径。如果你想更明确地声明一个绝对路径,那将是一个核心选​​项,以确保你总是知道你的模块是从哪里加载的,而不管你的脚本是从哪里运行的。

如果使用显式路径后仍然有问题,我不知道问题可能是什么。. .

于 2014-01-10T19:09:55.053 回答
0

另一种选择是运行 npm install --save express

于 2016-05-17T15:25:17.270 回答