Node.js Cannot find module 'mysql'

Cannot find module 'mysql' 不只是‘mysql’,Cannot find module 'express' 等也是同样的道理。

在使用nodejs的时候,难免会引用别人写的模块,就像在写java代码必须要引用第三方jar包一样。

而在引用的时候,可以通过npm获取,这时如果执行执行命令的位置不正确就会造成 Cannot find module 'mysql' 的错误。


执行命令的位置不同会造成module的安装位置的不同,因为命令中不带-g ,是会安装到当前路径下的:

(1和2都是错误安装位置,3位正确安装位置,原因在最后)

1.在任意位置执行命令 : npm install mysql -g   那么此module会出现在 C:\Users\SMouse\AppData\Roaming\npm\node-modules 目录下,如下图

(执行命令)


(文件位置)


2.在nodejs的安装目录下执行 :npm install mysql  ,那么‘mysql’ 模块就会安装到下面的node_modules 中



3.在工程代码中执行命令:npm install mysql ,那么‘mysql’ 模块就会安装到下面的node_modules (没有此文件会自动生成一个)中。

(如下node_modules就是我工程中module的位置,其余文件都是各种工程的代码。)



mysql目录下有一个 mysql.js 的测试代码如下:

var mysql = require('mysql');


解释:

起初我以为要把所有的module 都放在nodejs安装目录下的 node_modules 中。如果工程代码(指自己写的工程)也放在这,那么是可以使用的,但是如果nodejs安装在D盘,而工程代码在E盘,那么这个模块是引用不到的。 C:\Users\SMouse\AppData\Roaming\npm\node-modules路径也是同理。

node中引用自定义模块(非核心模块)时会进行如下三个步骤

1.路径分析

2.文件定位

3.编译执行

而路径分析是安如下方式进行的:

1)当前目录下的node_modules目录,

2)父目录下的node_modules目录;

3)父目录的父目录下的node_modules目录;

4)逐级递归,直到根目录下的node_modules目录。

如果这些目录中均未找到代码中所引用的module,那么就会报出错误:Cannot find module 'mysql'


  • 10
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值