为什么在导入 js 文件时需要 .js 扩展名

why require need .js extension while importing js file

我正在尝试使用以下方法实现 CommonJS patten link

https://blog.risingstack.com/node-js-at-scale-module-system-commonjs-require/

我遇到错误找不到文件错误为什么? 这是我的代码 https://plnkr.co/edit/mYeCYw9MOr87b4dQZr5I?p=preview 此行出现错误 const add = require('./login')

当我在 login 之后添加 .js 时,它可以工作,但在示例中它没有添加 .js 扩展名,为什么?大部分时间我使用 require 和 js extension.

const add = require('./login')

console.log(add(4, 5))  

根据 SystemJS 示例,您必须输入整个路径(包括扩展名)。

您可以在这里查看:

https://github.com/systemjs/systemjs

如果您希望继续能够省略 .js 扩展,您可以在 SystemJS 配置中使用 defaultExtension 选项。如果我将它添加到你的 plunker,它加载时不会出错:

SystemJS.config({
  packages: {
    '': {
      defaultExtension: "js"
    }
  }
})

这定义了一个包含所有代码的包,如果模块请求中未指定,默认扩展名是 .js