【发布时间】:2017-05-24 17:37:49
【问题描述】:
我有一个非常基本的 javascript 项目,它使用 webpack (^2.6.0) 作为模块捆绑器。作为供应商模块有一个依赖项,我有一个入口点。我的配置如下:
const path = require('path');
const webpack = require('webpack');
module.exports = {
entry: {
bundle: './modules/main.js',
vendor: ['react']
},
output: {
path: path.join(__dirname, 'build'),
filename: '[name].js',
chunkFilename: '[id].js'
},
plugins: [
new webpack.optimize.CommonsChunkPlugin({
name: "vendor"
})
]
};
这将创建捆绑包bundle.js 和vendor.js。 vendor-bundle 还包含 webpack-bootstrap-code,它是在我的任何模块加载之前加载的。现在,检查引导代码发现在第 40 行,webpack 生成了
/******/ var resolvedPromise = new Promise(function(resolve) { resolve(); });
不幸的是,Promise 在 IE11 上不可用,即使你包含一个包含 Promise 的 polyfill(例如 import 'babel-polyfill')作为入口点中的第一件事,甚至作为它自己的入口点,它也永远不会得到在引导代码运行之前执行,这意味着我不能在 IE11 上使用此代码,除非我在我的 webpack-bundle 之前手动包含一个 Promise-polyfill。不出所料,IE11 在我访问我的任何代码甚至是供应商捆绑包之前就会引发 Promise is not defined 错误。
我在这里遗漏了什么还是这是预期的行为?我在 webpack 文档中找不到任何内容来解决这个问题。
【问题讨论】:
-
在 Github 上查看这个帖子:github.com/mzabriskie/axios/issues/135#issuecomment-264216884
-
这似乎不是同一个问题——在 webpack 运行它的引导代码之前不可能加载任何东西,所以即使是 ProvidePlugin 也不起作用。不过,这似乎是最新 webpack 版本的错误 (github.com/webpack/webpack/issues/4916)
标签: javascript webpack promise internet-explorer-11