网站搜索

javascript - Webpack 2 ES6 导入没有默认导出的 UMD


我正在尝试使用 Webpack 2 和 ts-loader 导入 UMD 库。在使用 Webpack 1 和 Rollup(不使用 TypeScript)时它是可行的,但 Webpack 2 在调用导入的函数时会附加 .default。

例如:

import canvg from 'canvg';
canvg();

变成

var canvg_1 = require("canvg");
canvg_1.default();

然后我得到 Uncaught TypeError: canvg_1.default 不是一个函数。

如何修复它?

答案#1

问题出在 TypeScript 配置中,我在 tsconfig.json 中添加了 module: 'es2015',它就起作用了。此外,allowSyntheticDefaultImports: true 在某些情况下可能有帮助(在我的情况下不是必需的,类似于 @alejandro-garcia-anglada 描述的 babel-plugin-add-module-exports)。

{
    "compilerOptions": {
        "module": "es2015",
        "allowSyntheticDefaultImports": true
    }
}

答案#2

使用 babel-plugin-add-module-exports,你可以确保一切按预期工作。

https://www.npmjs.com/package/babel-plugin-add-module-exports