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
在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
模块。
解决步骤
-
进入项目目录: 首先,进入到你的项目目录
/home/keke/node/www
。cd /home/keke/node/www
-
安装
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
模块,可以解决找不到模块的问题。