在前端使用 ES6 npm 模块(webpack)
using ES6 npm module (webpack) in the front end
我正在通过webpack
使用ES6
语法(imports
,exports
等)制作一个npm
模块。
当我尝试在前端初始化导出类的实例以测试它时,它不起作用,我有一种感觉,这与CommonJS
导出返回与ES6
导出有关。
示例.js
export default class Example { ....
示例后网络包的东西.js
var Example = (function() ....
演示.js
var example = new Example();
演示.html
<script src="../example-after-webpack-stuff.js"></script>
<script src="demo.js"></script>
我收到以下内容:
错误:未捕获的类型错误:示例不是函数
编辑
Webpack 配置:
module.exports = {
entry: './src/example.js',
output: {
filename: "./dist/example.js",
library: "Example",
libraryTarget: "var"
},
module: {
loaders: [
{
exclude: /(node_modules|bower_components)/,
loader: 'babel',
query: {
presets: ['es2015']
}
}
]
}
};
从 babel 6 开始,export default class Example
将被编译为 exports.default = Example
。而在 Babel 5 中,它将被编译为 exports = Example
.因此,您的代码将使用 babel 5 运行而不会出错。
在 babel 6 中,你可以使用 CommonJS 方式module.exports
:
class Example {
constructor() {
...
}
}
module.exports = Example;
或者你可以使用 babel-plugin-add-module-exports
来改变 babel 6 的行为。
npm install babel-plugin-add-module-exports --save-dev
将其添加到 webpack.config.js:
loaders: [
{
exclude: /(node_modules|bower_components)/,
loader: 'babel',
query: {
presets: ['es2015'],
plugins: ['add-module-exports']
}
}
]
相关文章:
- 如何在Webpack中从导出中排除供应商模块peerDependencies
- 通过Webpack导入模块中的图像
- Webpack通过npm将代码拆分为单独的模块,以及如何编译es6
- 无法使用Webpack加载ES6模块
- 可以'I don’我不明白;使用webpack和es6模块进行EventEmitter
- 为具有核心模块和子模块的应用程序构建Webpack
- Javascript:Webpack+Typescript+Namespace(内部模块)
- 如何使用 webpack 要求或仅从模块导入必要的导出
- webpack配置警告和错误:;模块解析失败”;
- webpack所说的XX隐藏模块是什么意思
- 从脚本标记的全局范围调用webpack模块中的函数
- webpack在全局范围内执行模块
- 无法解析模块'角度'当使用Ionic和Webpack导入ngstorage时
- 使用webpack和babel加载程序导入导出ES6模块
- 导出由 webpack 构建的模块
- 使用 webpack 和 ts-loader 重新导出 ES6 模块
- 使用 webpack css 模块的容器查询
- 需要没有 Browserify、Webpack 或 Babel 的 reactjs 模块
- webpack 1:resolve.alias 不将一个 npm 模块别名到另一个 npm 模块
- 在前端使用 ES6 npm 模块(webpack)