我正在尝试使用我的反应应用程序中的promise来获取数据。我安装并实现了这个polyfill es6-promise,但是在IE8的窗口8上运行,但是IE10窗口7表示未定义'。我认为polyfill是为了涵盖所有IE9 +,但它对我不起作用。有人遇到过这个问题吗?我在使用webpack实现es6-promise polyfill时遗漏了什么吗?
// calling it my jsx file
import React, { PropTypes } from 'react';
import es6promise from 'es6-promise'; // not sure if I need this in the jsx file also??
promise.polyfill();
import 'isomorphic-fetch';
class App extends React.Component {
...
}
App.propTypes = propTypes;
export default App;
webpack.config.js
var promise = require('es6-promise').polyfill();
switch (TARGET) {
case 'build':
module.exports = mergeConfig({
plugins: [
// Reference: http://webpack.github.io/docs/list-of-plugins.html#uglifyjsplugin
// Minify all javascript. Loaders are switched into minimizing mode
new webpack.optimize.UglifyJsPlugin({
compress: {
warnings: false
}
}),
new webpack.DefinePlugin({
'process.env': {
// This has effect on the react lib size
'NODE_ENV': JSON.stringify('production')
}
}),
new webpack.ProvidePlugin({
PROMISE: promise
})
]
});
break;
答案 0 :(得分:1)
您可以尝试babel-polyfill。 安装后作为依赖。 将其导入app.js
import 'babel-polyfill';
答案 1 :(得分:1)
我有另一个有趣的解决方案(在这种情况下它适用于我)。我不想将polyfill导入到每个文件中,所以我通过WebpackProvidePlugin提供。
new webpack.ProvidePlugin({
"Promise": "babel-polyfill",
'fetch': 'imports-loader?this=>global!exports-loader?
global.fetch!whatwg-fetch'
})
所以现在我可以使用这些东西,而无需导入到每个文件中。这是一个非常重要的说明。有些资源建议使用 es6-promise 而不是 babel-polyfill ,我尝试使用它,但它对我不起作用。看起来es6-promise-polyfill在使用webpack + babel的情况下不起作用。所以我切换到 babel-polyfill 。在IE11中测试过,一切都很好。
希望它有所帮助。
最好的问候。 Velidan。
答案 2 :(得分:0)
我建议使用native-promise-polyfill
npm module,特别是如果您不需要其他功能babel-polyfill includes:
这意味着您可以使用Promise或WeakMap等新内置函数,Array.from或Object.assign等静态方法,Array.prototype.includes等实例方法以及生成函数