5.2模块查找规则-当模块没有路径且没有后缀时
require('find')
- Node.js会假设它是系统模块
- Node.js会去node_modules文件夹中
- 首先看是否有该名字的JS文件
- 再看是否有该名字的文件夹
- 如果是文件夹看里面是否有index.js
- 如果没有index.js则查看该文件夹中的package.json中的main选项确定入口模块文件
- 否则就会找不到报错
下面请看示例
模块引用代码
require('find');
由于系统模块中是没有find这个模块的,所以系统会去node_modules文件夹中去找,
所以接下来要创建一个node_modules文件夹,在有了node_modules文件夹之后,系统会先查找有没有同名的JS文件,那么我还需要再创建一个find.js文件,写入一些输出代码
接着到命令行去执行 require.js 文件
可以看到,我刚刚写入的输出代码被成功执行了
接下来我们来看没有同名JS文件时的情况,首先我需要更改一下find.js的文件后缀,以确保系统无法找到他。然后根据模块查找规则,我需要创建一个同名文件夹,并在里面创建一个index.js文件,写入一些输出代码。
接下来回到命令行当中执行 require.js 文件
可以看到,我刚刚写在index.js文件中的代码就被成功执行了
下面我们继续来看,假设find文件夹中没有index.js文件。那么根据模块查找规则,我要更改一下index.js的文件后缀,以确保系统无法找到他。然后通过 npm init -y 命令生成package.json文件。
接下来,根据模块查找规则。我还需要对package.json文件中的main选项做一些编辑,将其指向一个新的JS文件,并且在find文件夹中创建这个JS文件,写入一些输出代码。
最后,到命令行中执行 require.js 文件
执行成功!