Node.js Cannot find module 'mysql' 'express'

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'


--------------------- 
作者:SMouse鱼骨头 
来源:CSDN 
原文:https://blog.csdn.net/fouglelove/article/details/52778021 
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/qq_36688143/article/details/84234392