如何在 RequireJS 中同时使用默认导出和正常导出?

How to use both default export and normal exports in RequireJS?

lib.js

exports.value = 'Some value'

module.exports = {
  libraryName: '@CoolLibrary'
}

main.js

const { value } = require('./lib')
console.log('Value is '.concat(value))

当我像上面这样写代码时,看到的输出是Value is undefined。但是,我在库中将 value 导出为 Some value

我好像漏掉了什么。

在 Node.js 中同时使用 module.exportsexport.[value] 的正确导出方法是什么?

exportsmodule.exports 的别名,所以当你做

module.exports = {
  libraryName: '@CoolLibrary'
}

您完全替换了刚刚分配给 value 的对象,使 value 不可用。

这是不替换 exports 对象的一个​​很好的理由;相反,只需添加:

exports.value = 'Some value';
exports.libraryName = '@CoolLibrary';

或者如果您愿意:

Object.assign(exports, {
    value: 'Some value',
    libraryName: '@CoolLibrary'
});