47

当我尝试运行app.jsexpress 创建的文件时,出现以下错误:

$ node app.js

node.js:134
        throw e; // process.nextTick error, or 'error' event on first tick
        ^
Error: Cannot find module 'express'
    at Function._resolveFilename (module.js:320:11)

当我输入时,express --version我得到一个返回语句2.3.3。我使用 npm 安装 express。我必须使用以下说明手动制作 npm:

git clone http://github.com/isaacs/npm.git
cd npm
sudo make install

错误是Error: Cannot find module 'express'

安装 npm 和 express 后是否需要做一些事情才能让 express 看到 npm 创建的模块?

  • 我的节点是版本:0.4.6
  • 我的快递是版本:2.3.3
  • 我的 npm 是版本:1.0.6

Express 是全局安装的。我使用-g标志来安装它。


编辑:当我尝试时,"node -e require.paths"我得到:

[ '/home/user/.node_modules',
  '/home/user/.node_libraries',
  '/usr/local/lib/node' ]

因此,节点没有检测到 npm 安装。如何让节点检测 npm 安装?

4

14 回答 14

71
  • 安装快递

    npm install -g express

  • 创建一个新应用

    express your_app

  • cd 进入应用目录

    cd your_app

  • 使用 npm 链接解析模块

    npm link express

于 2011-08-29T12:13:56.660 回答
27

对 require() 使用本地安装,对命令行应用程序使用全局安装。

如果两者都需要,请使用npm link命令。

于 2011-08-04T18:46:41.693 回答
20

在 Ubuntu 12.04 上,您必须将 .bashrc 添加export NODE_PATH=/usr/local/lib/node_modules到您的 /.bashrc 才能使用全局安装的模块。

于 2012-08-09T16:05:49.250 回答
15

似乎虽然 npm 已更新以将全局模块安装到/usr/local/lib/node_modules中,但 Node 自己的require.paths尚未反映此更改。

有两种合理的解决方案:

  1. 将以下代码添加到应用程序的顶部:

    require.paths.push('/usr/local/lib/node_modules');
    
    • 优点:非侵入性,易于添加

    • 缺点:需要纪律,未来版本的节点限制访问require.paths

  2. 以 root 身份执行:

    ln -s /usr/local/lib/node_modules /usr/local/lib/node
    
    • 优点:合理的非侵入性

    • 缺点:需要 root,修改 linux fs,可能无法在系统更新后存活

于 2011-05-13T22:27:07.330 回答
8

我有同样的问题。不过,这对我有用:

似乎npm(现在?)将节点模块安装到/usr/local/lib/node_modules/而不是/usr/local/lib/node/

我所做的只是将所有内容从 node_modules 复制到 node:sudo cp -r /usr/local/lib/node_modules/* usr/local/lib/node/现在它似乎对我有用。

希望这可以帮助你:-)

于 2011-05-08T22:44:17.043 回答
8

NODE_PATH=/usr/local/lib/node_modules.bashrc.bash_profile中呢?我认为这是真正正确的方法。

于 2011-10-22T23:48:16.103 回答
2

如果您使用的是 Windows,则可能会发生NODE_PATH未设置环境变量的情况,因此当您执行node fileName.js它时将找不到库。

检查控制台上的变量,如果不存在,请创建它。给它一个NODE_HOME\node_modules值,NODE_HOME你的节点安装目录在哪里。此路径是 npm install 在下载时放置每个模块的位置。

于 2012-03-08T18:50:34.997 回答
2

设置NODE_PATH=NODE_HOME\node_modules

我正在使用 Windows 7,它工作正常。

于 2012-06-18T04:00:58.487 回答
2

require.paths已删除,请改用NODE_PATH环境变量。

于 2012-10-30T06:41:45.453 回答
1

看起来最简单的方法是npm install从您的应用程序文件夹运行。这告诉 npm 连接一切。

这是之后的最后一条指令express <appname>

...
dont forget to install dependencies:
$ cd <appname> && npm install
于 2011-11-11T04:30:14.397 回答
1

最后,使用 Linux 的一个好方法是使用以下命令:sudo apt-get install node-express

但是对于 express 4,我们必须使用 express-generator 制作应用程序骨架,使用 'npm install express-generator -g' 安装它,然后运行 ​​'express myapp' 命令。另请参阅安装快递

于 2016-02-20T20:29:44.027 回答
0

对于 mac 电脑上 express 的所有问题:

解决方案是:

  1. chown给您的用户 .npm 文件夹:

    sudo chown -R Webmaste /Users/webmaste/.npm/
    
  2. 在您的测试文件夹或您的文件夹中:

    sudo npm install -g express@2.5.8
    
  3. 从您的实际位置调用 express:

    /usr/local/share/npm/bin/express
    
  4. sudo cd . && npm install

  5. 最后:

    node app
    

控制台中的最终消息应如下所示:

Express server listening on port 3000 in development mode

于 2013-01-28T16:42:42.513 回答
0

对于 mac 用户

cd /usr/local/lib/node
sudo ln -s ../node_modules/* ./$1
于 2013-07-27T07:45:35.587 回答
0

我安装了gulp,当我gulp在命令行中运行此命令时出现gulp: command not found错误。它似乎安装gulp在我的本地文件夹中,/home/YOURUSERNAME/.node/lib/node_modules而不是在全局npm文件夹中。

npm您可以通过运行以下命令检查根文件夹: npm root -g,它返回的是我的个人目录/home/YOURUSERNAME/.node/lib/node_modules,而不是预期的/usr/local/lib/node_modules.

您可以通过运行npm config set prefix /usr/local命令来解决此问题。

于 2015-05-18T17:10:49.270 回答