使用webpack运行UMD软件包

时间:2018-07-06 23:30:57

标签: javascript webpack umd

我在加载a library时遇到问题,该问题是使用Webpack在UMD下导出的。

const AllErrorHandler = require('all-error-handler')

let errorHandler = new AllErrorHandler((err) => {
    console.log(`Error occured - ${err}`);
})

我收到的错误是:

Uncaught TypeError: Class constructor s cannot be invoked without 'new'

这是我简单的webpack配置

output: {
    filename: "./my-bundle.js",
    libraryTarget: "umd",
    umdNamedDefine: true
}

这是我如何导出库的示例

if (typeof define === 'function' && define.amd) {
    define([], AllErrorHandler);
} else if (typeof exports !== 'undefined') {
    if (typeof module !== 'undefined' && module.exports) {
        exports = module.exports = AllErrorHandler
    }
    exports.AllErrorHandler = AllErrorHandler
} else {
    root.AllErrorHandler = AllErrorHandler
}

软件包导出错误还是Webpack需要更多配置才能正确加载?

谢谢!

更新

我修复了更新出口问题的问题

if (typeof define === "function" && define.amd) {
    define([], function() {
        return (root.AllErrorHandler = AllErrorHandler);
    });
} else if (typeof exports !== "undefined") {
    if (typeof module !== "undefined" && module.exports) {
        exports = module.exports = AllErrorHandler;
    }
    exports.AllErrorHandler = AllErrorHandler;
} else {
    root.AllErrorHandler = AllErrorHandler;
}

并且可以使用require语法正常工作,但是不能使用import .. from。有办法解决吗?我猜想它来自webpack配置。

0 个答案:

没有答案