Javascript 网页包创作库导入错误,类型错误:xxx不是构造函数
将我编写(并发布到npm)的javascript包导入新项目时遇到问题 我创建了一个ES6包,并使用Javascript 网页包创作库导入错误,类型错误:xxx不是构造函数,javascript,webpack,Javascript,Webpack,将我编写(并发布到npm)的javascript包导入新项目时遇到问题 我创建了一个ES6包,并使用webpack将其打包。在包中,我可以使用脚本标记使用捆绑文件导入库 然后像这样重新开始上课: let awesomeTable=new awesomeTable.awesomeTable('record'); 工作起来很有魅力 我把这个包推到了npm,现在我想把它带到一个新项目中,就像这样: 从“@iannazzi/awesome table”导入AwesomeTable 然后 let aw
webpack
将其打包。在包中,我可以使用脚本标记使用捆绑文件导入库
然后像这样重新开始上课:
let awesomeTable=new awesomeTable.awesomeTable('record');
工作起来很有魅力
我把这个包推到了npm,现在我想把它带到一个新项目中,就像这样:
从“@iannazzi/awesome table”导入AwesomeTable
然后
let awesomeTable=新的awesomeTable('record')代码>
这是错误的:
TypeError:\u iannazzi\u awesome\u表\u网页包\u导入的模块\u 0\u默认值。a不是构造函数
现在,我将它导入到一个新项目中,我尝试了各种新方法来升级这个类,但似乎完全卡住了
我可以通过再次包含脚本来使用包,但显然我想导入,以便重新打包:
以下是该软件包的网页包配置:
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'
//})
]
};
首先,您需要公开您的库,您可以通过定义&libraryTarget:'umd'
properties来实现这一点
其次,不建议将lib作为捆绑包发布。考虑一下这个场景,您的lib由几个部分组成,但并非所有部分都是必需的。当您将lib打包发送时,您将强制用户下载多余的额外代码
目前的最佳实践是通过Babel传输代码,使其作为模块系统兼容es5
和commonjs
。
最近,有一种趋势是将es6模块放在一个单独的文件夹中,这样无论何时用户使用支持它的捆绑包,他们都可以使用它 我想我有它,libraryTarget
需要是umd
在包的网页配置中。。。对于回复,我确实通过添加libraryTarget使其工作。您在哪里阅读有关模块发布实践的信息?我好像被困在了网页包文档的一个部分谢谢!我认为我拥有的其实不是一个库——它是一段巨大的代码,所有的部分都是必需的。我已经创建了一个分布式捆绑包,可以用于在包中的浏览器中测试代码,现在可以使用umd
标记来分发该文件。我在想,如果我的一个主要应用程序要使用它,最好只发送源文件夹——它不需要捆绑,因为该应用程序正在捆绑。听起来你在确认这个思维过程…为了完整性。。。以下是我一直关注的文档: