有路径没有后缀
当使用 require()
方法引入一个模块没有指定没有指定后缀名时,就像下面这样:
require('./test.js')
require('./test')
模块加载机制规则:
- require 方法根据模块路径查找模块,如果是完整路径,没有省略后缀名,直接引入该模块
- 当后缀名被省略时,先按照路径查找同名 js 文件,再找路径下的同名文件夹
- 如果找到了同名文件夹,引入文件夹中的 index.js 文件
- 文件夹中没有 index.js ,在当前文件夹中的 package.json 中寻找 main 字段的入口文件。
如下所示 json 文件在路径中同名文件夹中查找 main.js 文件:{ "name": "Node.js", "version": "1.0.0", "description": "", "main": "main.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" } }
- 上面都不符合,报错
无路径无后缀
当使用 require
引入一个模块并且没有指定路径也没有指定后缀名时,就像下面这这样:
require('http')
- Node.js 会认为是系统模块
- 系统模块中没有时,会去 node_modules 文件夹中寻找
- 在 node_modules 文件夹中,查看是否具有同名的 js 文件
- 如果没有同名的 js 文件,会找同名文件夹
- 如果有,会去查找 index.js
- 如果没有 index.js ,会去 package.json 中的 main 字段查找入口 js 文件
- 上面都不符合,报错