nodejs之模块加载机制

有路径没有后缀

当使用 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 文件
  • 上面都不符合,报错
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值