【问题标题】:Nodejs Cannot find moduleNodejs找不到模块
【发布时间】:2014-01-29 14:04: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 命令提示符 windows 运行它:

node app.js

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

已解决/更新

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

【问题讨论】:

  • 这也发生在我身上,我在 Linux 机器上工作。可能全局安装可以帮助您通过命令行从任何点运行express。如果您在项目目录中运行 npm install 并在依赖项中包含 express,它将起作用。
  • 是的,但我打算做一组我经常在各种应用程序中使用的模块,那么全局安装是个好主意。
  • 如果您想节省磁盘空间,您可以创建一个指向全局安装模块的链接。

标签: node.js node-modules


【解决方案1】:

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

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

我确信同样的事情也适用于 windows 路径。如果您想更明确地声明一个绝对路径,那将是确保您始终知道从哪里加载模块的核心选项,无论您的脚本是从哪里运行的。

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

【讨论】:

    【解决方案2】:

    您应该在本地安装 Express:

    npm install express
    

    然后像你一样要求它:

    var express = require('express')
    

    【讨论】:

    • 我无法看到这个答案所说的不是重复 OP 在他已经做过的问题中所说的内容。
    • 当 OP 明确表示他做了一些不同的事情并解决了问题时,我也很困惑为什么这是“已接受”的答案。
    • 本地安装在哪里?前任。 /home/user/project?
    • @AdiInbar 在这个用户的情况下,区别在于全局范围与本地范围(-g 标志),尽管奥吉和卡尔的观点是有效的
    • @Kari Morrison "locally" 在这里可能是指调用 javascript 文件的工作目录,即 __dirname 的输出。尽管您是绝对正确的,但这需要在答案中明确说明。
    【解决方案3】:

    只是引用这里:

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

    • 如果您要 require() 它,请在本地安装它。
    • 如果要在命令行上运行它,请全局安装它。
    • 如果两者都需要,则将其安装在两个位置,或使用 npm link

    【讨论】:

    • 更喜欢命令 1) npm install-locally somenodemodule 和 2) 另一个命令 npm install-globally-for-command-line somenodemodule 或类似的东西?只是个人喜好,但我喜欢它可读性强且多汁!
    • 这完全解决了我遇到的问题。我刚刚安装了一个与require 一起使用的库,我认为它通常可以在我的系统中快速使用,而不是特定的脚本或项目。我已经全局安装了该库,然后将其本地链接到我的工作目录以供快速使用。我“可能”理解他们的范式,但主要还是希望在全球范围内轻松地需要它。
    【解决方案4】:

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

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

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

    【讨论】:

    • 另一种选择 > 设置 NODE_PATH=%USERPROFILE%\AppData\Roaming\npm\node_modules
    • 第二种选择:设置 NODE_PATH=%AppData%\npm\node_modules
    【解决方案5】:

    另一个选项是运行 npm install --save express

    【讨论】:

      猜你喜欢
      • 2017-12-16
      • 1970-01-01
      • 2016-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-22
      • 2013-12-25
      • 2016-08-04
      相关资源
      最近更新 更多