Nodejs无法找到模块

Mat*_*ahl 20 node.js node-modules

我在尝试使用任何全局模块时遇到错误,例如:

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)
Run Code Online (Sandbox Code Playgroud)

我安装了express命令:

npm install -g express
Run Code Online (Sandbox Code Playgroud)

我的app.js:

var express = require('express');
Run Code Online (Sandbox Code Playgroud)

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

node app.js
Run Code Online (Sandbox Code Playgroud)

我真的不知道出了什么问题,我在windows中阅读了一些关于环境变量的内容,这可以吗?

已解决/更新

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

Luc*_*lin 14

只是引用这里:

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

  • 如果你想要()它在本地安装它.
  • 如果要在命令行上运行它,请全局安装它.
  • 如果您需要两者,请在两个位置安装它,或使用npm链接.


小智 13

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

NODE_PATH=C:\Users\[USERNAME]\AppData\Roaming\npm\node_modules
Run Code Online (Sandbox Code Playgroud)

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

  • 替代>设置NODE_PATH =%USERPROFILE%\ AppData\Roaming \npm \node_modules (3认同)
  • 第二种选择:设置NODE_PATH =%AppData%\npm \node_modules (3认同)

小智 12

您应该在本地安装Express:

npm install express
Run Code Online (Sandbox Code Playgroud)

然后像你一样要求它:

var express = require('express')
Run Code Online (Sandbox Code Playgroud)

  • 我很难看到这个答案所说的不是OP在他已经做过的问题中所说的重复. (7认同)
  • 我也很困惑为什么这是"接受"的答案,当OP明确表示他做了不同的事情并解决了这个问题. (6认同)
  • 在本地安装?例如 / home /用户/项目? (2认同)

Bri*_*ian 5

我在 Linux 中工作,但是当我需要 Express 时,我会使用它安装位置的相对路径来执行此操作,并且它工作正常:

var express = require('./public/node_modules/express');
Run Code Online (Sandbox Code Playgroud)

我确信同样的事情也适用于 Windows 路径。如果您想更明确并声明绝对路径,那么这将是核心选项,以确保您始终准确地知道从何处加载模块,无论脚本从何处运行。

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