Nodejs Error: Cannot find module 'express'

Nodejs Error: Cannot find module 'express’

二进制node解压在/home下,就是/home/keke/node cd /home/keke/node bin/npm install -g express 安装成功,在lib/node_module下有express 可是在/home/keke/node/www下执行…/bin/node helloworld.js时候报出如下错误: module.js:340 throw err; ^ 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> (/home/keke/node/www/helloworld.js:1:77) 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)

这是什么原因?我是-g全局安装express的,为什么会找不到express


6 回复

在Node.js中遇到“Cannot find module ‘express’”错误通常意味着你的应用程序无法找到或加载指定的模块。这可能是由于多种原因造成的,包括但不限于模块未正确安装、路径问题、或者全局与本地安装的混淆。

在你的案例中,你已经全局安装了express,但当你尝试运行helloworld.js时,它仍然报告找不到该模块。这可能是因为全局安装的模块不能被本地脚本直接访问。

原因分析

当你使用npm install -g express命令全局安装express时,这个模块被安装到了Node.js的全局模块目录中(例如,/usr/local/lib/node_modules/usr/lib/node_modules),而不是你当前项目的本地node_modules目录中。

然而,当你在项目中使用require('express')时,Node.js会首先检查当前项目中的node_modules目录。如果在那里没有找到对应的模块,它才会去全局模块目录中查找。因此,即使全局安装了express,本地脚本仍然可能会因为找不到该模块而报错。

解决方案

方法一:局部安装Express

最简单的方法是将express作为项目依赖局部安装到你的项目中。这样,所有的依赖项都会被包含在你的项目目录中,确保所有依赖都是可用的。

cd /home/keke/node/www
npm install express --save

然后,你可以确保express已经被添加到package.json文件的依赖列表中,并且可以在你的应用中正常工作。

示例代码

假设helloworld.js文件内容如下:

var express = require('express');
var app = express();

app.get('/', function (req, res) {
  res.send('Hello World!');
});

app.listen(3000, function () {
  console.log('Example app listening on port 3000!');
});

在完成上述步骤后,再次运行你的应用:

../bin/node helloworld.js

这次你应该不会再看到“Cannot find module ‘express’”的错误了。

通过这种方法,你不仅解决了当前的问题,还使你的项目更加独立和易于部署。


环境变量?NODE_PATH

如下? npm install -d

export PATH=”$HOME/node/bin:$PATH” export NODE_PATH=”$HOME/node/lib/node_modules” 完美解决

同求助,Cannot find module ‘request’

根据你的描述,问题可能是因为全局安装的模块没有正确地被项目依赖识别。全局安装的模块不会自动被包含到本地项目中,你需要在项目本地安装 express 模块。

解决步骤

  1. 进入项目目录: 首先,进入到你的项目目录 /home/keke/node/www

    cd /home/keke/node/www
    
  2. 安装 express 模块: 在项目目录中使用 npm install 命令来安装 express 模块。

    npm install express --save
    

    这条命令会在项目的 node_modules 目录中安装 express 并将它添加到 package.json 文件中的 dependencies 部分。

示例代码

假设你的 helloworld.js 文件是这样的:

var express = require('express');
var app = express();

app.get('/', function (req, res) {
  res.send('Hello World!');
});

app.listen(3000, function () {
  console.log('Example app listening on port 3000!');
});

确保你在项目的根目录(即包含 package.json 的目录)运行 node helloworld.js

总结

全局安装的 express 模块并不会自动应用到你的项目中。通过在项目目录中安装 express 模块,可以解决找不到模块的问题。

回到顶部