Node.js Cannot find Module xxx 的问题

不知道为什么第一天Node。js干的挺顺利的,回公司后就干的一点都不顺利,主要原因还是公司的网络的问题,使用的受限制的代理,不能直接使用NPM从远程下载模块,唉。

node.js的模块加载顺序首先是从项目目录下的node_modules文件夹下查找,然后一级一级向上查找 ,可以在项目目录下使用 node 命令,然后输入 global.module.paths查看node。js加载模块的顺序。

node。js在安装的时候默认会安装npm,npm的默认的模块文件夹可以使用命令 npm root -g 来查看,也可以同npm config get prefix 来查看 ,也可以通过npm config set prefix 来修改

仔细观看你就会发现一个神奇的事情,npm的默认的模块安装位置并没有在node。js项目的默认查找的范围内,所以我们需要制定环境变量 NODE_PATH 来指向npm的默认模块安装位置。

记得注销一下,环境变量才能生效。

总结一下出现这种问题的原因无非是3个

1.书写错误,往往是写错了模块的名称,而导致无法加载

2.未安装相关模块

3.安装了相关模块,但并未设置成全局的,也没有在项目根目录下的node_modules目录里面

4.未设置NODE_PATH环境变量

时间: 2024-10-28 18:59:54

Node.js Cannot find Module xxx 的问题的相关文章

node.js cannot find module 'mysql'

nodejs cannot find module 'mysql' 问题分析 在windows平台下,测试nodejs连接mysql数据库. 首先 在控制台中安装mysql依赖包 一开始我是在相应js所在在目录下安装mysql支持,结果是: 看到那么多WARN时,以为自己装的有问题,于是准备进行全局安装, npm install -g mysql 并没有error和warn. 但是当执行js时,会抛出异常 原因是:安装成功后,mysql依赖包在C:\Users\陈\AppData\Roaming

Node.js中module文件定义的top-level变量为何是私有的

在Node.js中,module文件里面使用var,const或者let定义的top-level变量为何是私有的,只能在这个模块文件中使用呢? 原因就是,在模块文件中的内容执行之前,node.js会降模块文件包含在一个函数当中,像下面这样: (function(exports, require, module, __filename, __dirname) { // Module code actually lives in here }); 这样处理之后,module文件里面定义的top-le

Node.js Base64 Encoding和Decoding

如何在Node.js中encode一个字符串呢?是否也像在PHP中使用base64_encode()一样简单? 在Node.js中有许多encoding字符串的方法,而不用像在JavaScript中那样定义各种不同的全局函数.下面是如何在Node.js中将一个普通字符串encode成Base64格式的代码: var b = new Buffer('JavaScript'); var s = b.toString('base64'); // SmF2YVNjcmlwdA== 下面是decode b

node.js开发环境搭建

本篇介绍MacOSX下node.js开发环境的搭建. 目录: 1.介绍 2.搭建环境 3.开发 4.参考资料 1.介绍 node.js是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快.易于扩展的网络应用.Node.js 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行的数据密集型的实时应用. node是一个Javascript运行环境(runtime).实际上它是对Google V8引擎进行了封装.V8引 擎执行Javascr

Node.js http parse error

今天碰到一个奇怪的错误. events.js:72 throw er; // Unhandled 'error' event ^ Error: Parse Error at Socket.socketOnData (http.js:1583:20) at TCP.onread (net.js:527:27) 代码如下: 一个简单的http服务器 var http = require('http'); var server = http.createServer(); server.listen(

Node.js学习之(第二章:exports和module.exports)

前言 Node中,每个模块都有一个exports接口对象,我们需要把公共的方法或者字符串挂载在这个接口对象中,其他的模块才可以使用. Node.js中只有模块作用域,默认两个模块之间的变量,方法互不冲突,互不影响,这样就导致一个问题,我们怎样使用加载进来的模块中的方法呢?这就需要在另外一个模块exports接口对象中挂载模块中公共的方法. exports 我们在a.js中有以下代码: let foo = 'hello' function add (x, y) { return x+y } exp

Node.js module.exports和exports的区别

require 用来加载代码,而 exports 和 module.exports 则用来导出代码,从接触node.js就不会它们两陌生,上代码: foo.js exports.a = function(){ console.log('a') } exports.a = 1 test.js var x = require('./foo'); console.log(x.a) //1 foo.js exports.a = function(){ console.log('a') } module.

Node.js中的模块接口module.exports浅析

在写node.js代码时,我们经常需要自己写模块(module).同时还需要在模块最后写好模块接口,声明这个模块对外暴露什么内容.实际上,node.js的模块接口有多种不同写法.这里作者对此做了个简单的总结. 返回一个JSON Object 如下代码是一个简单的示例. 1 var exp = { 2 "version": "1.0.0", 3 "function1": null, 4 "module1": null, 5 };

node.js中的exports和module.exports

不同的编程语言都有各自的代码组织和复用的方式,如.net.php中的命名空间,python中的import,ruby中的module等,来避免命名空间污染.一直都没搞清楚node中的exports和module.exports的区别,借此搞清楚node的代码模块复用方式. 首先怎么创建node中的modules. 可以直接创建一个文件作为module,如下module.js function writeLine(){ console.log("module.js"); } export