Javascript 如何同时使用module.exports和exports.default

Javascript 如何同时使用module.exports和exports.default,javascript,ecmascript-6,import,export,Javascript,Ecmascript 6,Import,Export,模块是否可以像这样导入 从“foo”导入foo; 像这样 const foo=require('foo'); 如果是这样,导出的语法可能如下所示: constfoo='a string to export'; exports.default=foo; module.exports=foo; 但是根据我们的说法,这是一个错误的语法 我问这个问题是因为我遇到了一个使用这种语法的模块,并且有错误(import foo from'foo'makefoobeundefined但是const foo=

模块是否可以像这样导入

从“foo”导入foo;
像这样

const foo=require('foo');
如果是这样,导出的语法可能如下所示:

constfoo='a string to export';
exports.default=foo;
module.exports=foo;
但是根据我们的说法,这是一个错误的语法

我问这个问题是因为我遇到了一个使用这种语法的模块,并且有错误(
import foo from'foo'
make
foo
be
undefined
但是
const foo=require('foo')
很好)。 但是在另一方面,我故意添加了这个语法,所以我有点不知所措


编辑:

我找到了一种方法,但它有点粗糙,它会导致循环引用,所以我不会说这是答案:

module.exports=foo;
module.exports.default=foo;

我认为
导出。默认值是巴别塔的东西吗?对于您的平台
导出来说,这一定是一个互操作性问题。默认值本身就可以正常工作<代码>模块。导出
本身工作正常。两者结合在一起是行不通的。此外,据我所知,我正在使用Node 13.2.0,Node.js允许您使用模块语法将cjs模块导入es6模块。我在文档中找不到有关导出的任何内容。默认值是将ES6
export default foo
语法转换为CommonJS语法的标准方法。Babel使用它,但它不是唯一的一个,TypeScript编译器也会这样做。我认为
导出。默认值
是Babel的东西吗?对于您的平台
导出来说,这一定是一个互操作性问题。默认值本身就可以正常工作<代码>模块。导出
本身工作正常。两者结合在一起是行不通的。此外,据我所知,我正在使用Node 13.2.0,Node.js允许您使用模块语法将cjs模块导入es6模块。我在文档中找不到有关导出的任何内容。默认值是将ES6
export default foo
语法转换为CommonJS语法的标准方法。Babel使用它,但它不是唯一的一个,TypeScript编译器也这样做。