我的情况和你一样。这是我的代码:
webpack.config.js:
module.exports = {
entry: './src/method/eTrack/index.js',
output: {
filename: 'eTrack.js',
path: path.resolve(__dirname, 'dist'),
library: 'eTrack',
libraryTarget: 'umd'
},
};
./src/method/eTrack/index.js:
import create from './create';
import getAll from './getAll';
import getByName from './getByName';
import remove from './remove';
export function eTrack () {
}
eTrack.trackers = [];
eTrack.create = create;
eTrack.getAll = getAll;
eTrack.getByName = getByName;
eTrack.remove = remove;
好吧,通过 webpack 捆绑后,我可以在窗口中访问 eTrack,但它原来是一个对象。这意味着我不能直接调用 eTrack(),但应该像 eTrack.eTrack() 一样调用。
我也试过@Ambroos的解决方案,把./src/method/eTrack/index.js改成:
module.exports = function eTrack () {
}
这次捆绑后,我无法在浏览器窗口中访问eTrack,eTrack 对象消失并在控制台中抛出eTrack is undefined 错误。
然后我找到了一篇很有帮助的文章:http://siawyoung.com/coding/javascript/exporting-es6-modules-as-single-scripts-with-webpack.html
并将我的 index.js 更改为:
function eTrack () {
}
module.exports = eTrack;
然后一切都按预期进行!我可以直接在<script> 标签中调用eTrack()。虽然我不知道@Ambroos 的答案和这个解决方案之间的区别。