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

问题描述

lib.js

exports.value = 'Some value'

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

ma​​in.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'
});

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...