破坏导出默认值和module.exports之间的区别

时间:2017-12-02 06:26:57

标签: javascript node.js babel

我一直在努力在另一个文件中破坏我的mongo对象,我的对象结构如下所示。

  const env = {
       project: 'CRIBBBLE BACKEND',
       url: 'localhost',
       api: {
         url: 'https://api.dribbble.com/v1/',
       },
       port: parseInt(process.env.PORT, 10) || 3000,
       mongo: database,
};

 export default env;

但是,当我尝试import另一个mongo文件中的js对象时,{ mongo } from 'config'返回的值为undefined。 但是,如果我将导出默认值更改为module.exports,它将按预期工作。

所以,我只是想知道module.exportsexport default之间有什么区别?

2 个答案:

答案 0 :(得分:2)

module.exports是从不同文件导入和导出的NodeJS(CommonJS)样式。 import/export ES6具有做同样事情的功能。

如果您export defualt,则需要像import env from 'location'一样导入它(看看我发出{}部分),然后通过mongo访问env.mongo。您不能直接获取mongo对象。

答案 1 :(得分:1)

使用foo导出时,导入后使用{default: foo}可以导出整个导出的import * as bar from './foo'。这就是您无法访问所需属性的原因。尝试导入为:bar并使用console.log(bar)探索{{1}}以查看其下发生的情况。另外,如需了解更多信息,请访问2ality.com上的es6 module exports