为什么模块导出 { ...require('module') } 工作但不是 module.export { require('module') }

  • 本文关键字:module require export 工作 模块 node.js
  • 更新时间 :
  • 英文 :


justExport.js

const first = () => {
  console.log('frist from justExport')
}
const second = () => {
  console.log('second fromt justExport')
}
module.exports = {
  first,
  second,
}

TMP.js

module.exports = {
  ...require('./justExport') // work
  require('./justExport') // SyntaxError: Unexpected string
}

主.js

const justExport = require('./justExport.js')
const tmp = require('./tmp.js')
console.log('Hello World!')

我自愿用更少的代码创建了一个假例子。

{ ...require('./justExport') }是对象文字传播。虽然{ require('./justExport') }对象文字语法不正确,因为它不包含键。

除非目的是创建模块justExport浅拷贝,否则不需要对象文本。它可以是:

module.exports = require('./justExport');

为了进一步澄清@estus的答案,请注意,由于 ES6 速记属性名称,以下工作:

const justExport = require('./justExport');
module.exports = {
  ...justExport, // works
  justExport // works because key is implicitly defined by variable name
}

最新更新