javascript - 导入 CommonJS 在 ES6 中无法正确解构

标签 javascript reactjs webpack ecmascript-6

在我的模块依赖项的根目录中,我有一个名为 form.js 的文件:

module.exports = require("./dist/bundle.js").form;

在我的项目中,我有:

import { someComponent } from 'my-dependency/form';

但是someComponent将是未定义

如果我这样做:

import form from 'my-dependency/form';
console.log(form.someComponent);

它将在控制台中输出如下所示的内容:

ƒ Rr(e){var t=e.component,n=void 0===t?"input":t,r=e.rend[....]

但是,如果我这样做,它就会起作用:

import form from 'my-dependency/form';
const { someComponent } = form;

我在这里做错了什么以及我如何实现我想要的?

在我的 src/form.js 文件中我有:

import someComponent from "./someComponent";
export default {
  someComponent
};

src/index.js内部,我有:

import * as form from "./form";
export default {
  form
};

可能的根本原因但不确定如何解决?...

看起来像是使用 CommonJS 导出并使用 ES6 语法导入导致的问题。

这里有人有类似的问题,但是是在 4 年前: https://github.com/google/traceur-compiler/issues/1483

并且,从 2 年前开始: https://github.com/Microsoft/TypeScript/issues/11179

我已经尝试像这样显式设置代码,但这似乎没有达到我想要的效果(创建具有默认属性的模块):

Object.defineProperty(module.exports, "__esModule", {
  value: true
});

看起来在线阅读的人会import * as another from '..'但不应该解构工作吗?...

最佳答案

有两种方法:

export const someComponent

然后:

import { someComponent } from 'my-dependency/form'

或者:

export default {
  someComponent
}

然后:

import someComponent from 'my-dependency/form'

关于javascript - 导入 CommonJS 在 ES6 中无法正确解构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53546863/

相关文章:

javascript - 未捕获的 TypeError : this. props.getAllContacts 不是函数

javascript - 切换数组中的项目 react

javascript - 如何通过 ES6 + Webpack 在浏览器中使用我的 Javascript 库?

javascript - 使用 select2 设置 <select> 的样式

javascript - Aurelia 逐个导入库

javascript - JS 代码中的 iMacros 错误

mysql - Cpanel 上的 Express/NodeJS 应用程序

javascript - 动态添加单元格到表格行并使用reactjs动态创建表格行

javascript - Uglify,无法读取未定义的属性 'reset'

json - Typescript 提示导入的 json 模块缺少分号