为什么module.export {... require('module')}起作用,而module.export {require('module')}不起作用

时间:2019-01-05 16:11:40

标签: 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
}

main.js

const justExport = require('./justExport.js')
const tmp = require('./tmp.js')

console.log('Hello World!')

我自愿用更少的代码创建了一个伪造的示例。

2 个答案:

答案 0 :(得分:2)

{ ...require('./justExport') }object literal spread{ require('./justExport') }是不正确的对象文字语法,因为它不包含键。

除非打算创建justExport模块的浅表副本,否则不需要对象文字。可以是:

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

答案 1 :(得分:1)

要进一步阐明@estus的答案,请注意由于ES6 shorthand property names,以下工作有效:

const justExport = require('./justExport');

module.exports = {
  ...justExport, // works
  justExport // works because key is implicitly defined by variable name
}