使用NPM安装时找不到Express模块

时间:2011-05-07 07:08:38

标签: javascript node.js express npm

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

$ 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安装?

14 个答案:

答案 0 :(得分:68)

  • 安装快递

    npm install -g express

  • 制作新应用

    express your_app

  • 进入app目录

    cd your_app

  • 使用npm链接解析模块

    npm link express

答案 1 :(得分:27)

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

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

答案 2 :(得分:20)

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

答案 3 :(得分:15)

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

有两种合理的解决方案:

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

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

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

  2. 以root身份执行:

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

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

答案 4 :(得分:8)

我遇到了同样的问题。这对我有用:

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

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

希望这可以帮助你: - )

答案 5 :(得分:6)

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

答案 6 :(得分:2)

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

检查控制台上的变量,如果不存在,则创建它。为其指定NODE_HOME\node_modules值,其中NODE_HOME是您的节点安装目录。这条路径是npm install在下载时放置每个模块的地方。

答案 7 :(得分:2)

设置NODE_PATH=NODE_HOME\node_modules

我正在使用Windows 7,它运行正常。

答案 8 :(得分:2)

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

答案 9 :(得分:1)

看起来最简单的方法是从应用的文件夹中运行npm install。这告诉npm将所有内容挂钩。

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

...
dont forget to install dependencies:
$ cd <appname> && npm install

答案 10 :(得分:0)

对于使用mac计算机表达的所有问题:

解决方案是:

  1. chown向您的用户提供.npm文件夹:

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

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

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

  5. 最后:

    node app
    

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

      

    Express server listening on port 3000 in development mode

答案 11 :(得分:0)

对于mac用户

cd /usr/local/lib/node
sudo ln -s ../node_modules/* ./$1

答案 12 :(得分: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命令来解决此问题。

答案 13 :(得分:0)

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

但是对于快递4,我们必须使用快速生成器制作应用程序框架,使用&nbsp install express-generator -g&#39;安装它,然后运行“表达myapp&#39;命令。 另见install express