Webpack创作库导入TypeError错误:xxx不是构造函数

亚纳齐

我在将我编写(并发布到npm)的javascript包导入新项目时遇到了麻烦。

我创建了一个ES6软件包,并使用将其捆绑了webpack在包中,我可以使用脚本标签使用捆绑的文件导入库,

<script src='../dist/awesome-table-dist.js'></script>

然后像这样重新上课:

let awesomeTable = new AwesomeTable.AwesomeTable('record');

奇迹般有效!很棒的桌子

我将程序包推送到npm,现在我想将其引入新项目中,如下所示:

import AwesomeTable from '@iannazzi/awesome-table'

然后

let awesomeTable = new AwesomeTable('record');

这是错误的: TypeError: _iannazzi_awesome_table__WEBPACK_IMPORTED_MODULE_0___default.a is not a constructor

现在,我将其导入到一个新项目中,我尝试了各种新方法,但似乎完全陷入了困境。

我可以通过再次包含脚本来使用该程序包,但是显然我想导入以便重新打包: <script src='node_modules/@iannazzi/awesome-table/dist/awesome-table-dist.js'></script>

这是软件包的webpack配置:

var path = require('path');
const ExtractTextPlugin = require("extract-text-webpack-plugin");

const SRC_DIR = path.resolve(__dirname,'../src');
const DIST_DIR = path.resolve(__dirname, '../dist');

module.exports = {
    entry: {
        app: SRC_DIR + '/table/AwesomeTable.js'
    },
    output: {
        path: DIST_DIR,
        filename: 'awesome-table-dist.js',
        library: 'AwesomeTable',
        // libraryTarget: 'window'
    },
    module: {
        rules: [
            {
                test: /\.scss$/,
                use: ["style-loader", "css-loader", "sass-loader"],
            },
        ],
    },
    plugins: [
        new ExtractTextPlugin('style.css')
        //if you want to pass in options, you can do so:
        //new ExtractTextPlugin({
        //  filename: 'style.css'
        //})
    ]
};
费利克斯莫什

首先,您需要公开您的库,您可以通过定义librarylibraryTarget: 'umd'属性来实现。

其次,不建议将lib作为捆绑发布。考虑一下这种情况,您的lib由几个部分组成,但并非所有部分都是强制性的。当您交付lib aa捆绑软件时,您正在强迫用户下载多余的额外代码。

当今的最佳实践是通过Babel转换代码以使其兼容es5commonjs作为模块系统。最近,有一种趋势是将es6模块运送到一个单独的文件夹中,这样,只要您的用户使用支持树状交换的捆绑软件,他们就可以使用它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

webpack导入的模块不是构造函数

Babel和ES6发生意外的“未捕获的TypeError:XXX不是构造函数”错误

错误:*。default不是构造函数

在webpack配置错误中导入uikit框架“ UI。$不是函数”

类型错误-不是构造函数

TypeError:index_1.X不是构造函数-Karma-Jasmine-Webpack

隐藏构造函数,而不是导入类型

打字稿| TypeError:__WEBPACK_IMPORTED_MODULE_1_signature_pad__不是构造函数

使用Typescript和Webpack,Vue不是构造函数错误

导入模块错误不是函数?

TypeError:xxx不是构造函数

导入React Typescript的包时不是构造函数错误

TypeError:webpack.CopyWebpackPlugin不是构造函数

TypeError:UserSchema不是构造函数(Schema不是MongoDB的构造函数)

TypeError:不是构造函数

这是错误堆栈:TypeError:XXX_1.Foo不是构造函数,因为运行时(编译良好)

Webpack导入,default.a不是构造函数

导入Keycloak时,Webpack导入的模块在VueJS中不是构造函数

错误TypeError:BlinkId不是构造函数离子4

库和Angular出现“不是构造函数”错误

TypeError:Webpack导入的模块不是函数

TypeError:GraphQLObjectType不是构造函数

TypeError:确定不是构造函数

TypeError:“ x”不是构造函数

WebpackError:TypeError:p5__WEBPACK_IMPORTED_MODULE_4 ___ default.a不是构造函数

(TypeError): _aws_amplify_core__WEBPACK_IMPORTED_MODULE_8__.AWS.DynamoDB 不是构造函数

webpack:TypeError:validateOptions 不是函数

TypeError:Slackbot 不是构造函数

TypeError:MagicLoginStrategy 不是构造函数