一、全局包
1.1 nodemon npm i nodemon -g
1.2 cnpm npm i cnpm -g
二、本地项目包
2.1 express npm i express -S
2.1 express npm i ejs-S
2.1 express npm i art-template -S
2.1 express npm i express-art-template -S
2.1 express npm i mysql -S
查询已安装的包(全局)
C:\Users\Administrator\AppData\Roaming\npm
模块加载机制
第一次会缓存到内存中,下次 优先从缓存中加载,提高加载速度
核心模块的加载机制
- 先查找缓存;如果缓存中没有,再去加载核心模块;
用户模块的加载机制
- 先查找缓存;
- 如果缓存中没有则尝试加载用户模块;
- 如果在加载用户模块时候省略了后缀名,则:
首先,严格按照指定的名称去查找
其次,尝试加载后缀名是 .js 的文件
如果没有.js的文件,则尝试加载 .json 结尾的文件
如果没有 .json 的文件,则尝试加载 .node 结尾的文件
查找规则:index -> index.js -> index.json -> index.node
第三方模块的加载机制
- 先在项目根目录中查找node_modules文件夹
- 在node_modules文件夹下,查找模块相关的文件夹
- 在对应的文件夹下,查找package.json的文件
- 查找package.json文件中的main属性(指定了模块的入口文件)
- 如果找到了main属性,同时,main属性指定的文件路径存在,那么尝试加载指定的文件模块
- 加入没有main属性,或者main属性对应的文件不存在,或者没有package.json,那么会依次尝试加载index.js,index.json,index.node;
- 如果没有index相关的文件,或者没有指定模块对应文件夹,或者,当前项目根目录中没有node_modules文件夹,则向上一层目录中查找node_modules,查找规则同上!(所以项目根目录有node_modules及相关的包就行)
- 最后,如果在项目所在磁盘的盘符根目录中,还找不到对应模块,则报错:cannot find module ***
网友评论