簡體   English   中英

導入CommonJS不能在ES6中正確解構

[英]Importing CommonJS does not destructure correctly in ES6

在模塊依賴項的根目錄中,有一個名為form.js的文件:

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

在我的項目中,我有:

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

然而someComponent將是undefined

如果我這樣做:

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 whatever from '..'但也不應破壞工作嗎?...

有兩種方式:

export const someComponent

然后:

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

要么:

export default {
  someComponent
}

然后:

import someComponent from 'my-dependency/form'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM