此提取在Chrome中运行良好:
fetch( this.props.url, {credentials:'same-origin'})
.then( (data) => data.json() )
.then( (data) => {
if( data.length > 0) {
// do some stuff
} else {
console.log('No data Richard of the Beard of the Lewis.');
}
});
我正在使用等距抓取,我正在使用promise-polyfill填充我的承诺。我正在使用webpack和babel来编译js。
当我在IE11中执行此代码时,数据的初始提取执行并且我的响应确实包含所请求的数据,但我的'then'中的任何内容似乎都没有执行(我在几个不同的地方应用了console.logs看完他们在完成取得之后是否抽搐......没有去)。我没有控制台错误,所以我认为IE11对编译的js语法很满意。
有人有线索让我试试吗?我是否需要以更冗长的方式重新编写我的fetch语句,以便IE11完全执行它?在这一点上任何事都有用!感谢您的任何意见。
答案 0 :(得分:0)
查看isomorphic-fetch
,该软件包只是导入导出whatwg-fetch
或node-fetch
的各种元数据包,具体取决于您是在浏览器还是在Node上下文中。< / p>
我认为您的问题是它默认会使用节点版本(请参阅main entry in the package.json)。
作为polyfill,它只是在非IE上跳过,因为浏览器默认支持fetch。在IE11上使用了polyfill,但它是Node polyfill,它不能在浏览器中运行。
您可以通过包含浏览器特定版本来强制webpack使用浏览器版本:
require('isomorphic-fetch/fetch-npm-browserify')
或
import 'isomorphic-fetch/fetch-npm-browserify'
或在Webpack配置中:
entry: [
'isomorphic-fetch/fetch-npm-browserify',
'app.js'
]
答案 1 :(得分:0)
所以这就是我最终使用的对我有用的东西:
require('es6-promise').polyfill();
require('fetch-everywhere');
我曾尝试过另外两个被称为神奇和多重填充的提取,但上面的组合最终允许我在代码中找到IE不兼容的REST。 :)
答案 2 :(得分:0)
您需要包括以下文件,以便fetch.js在 IE 11 +
中运行在运行 webpack 命令之前,必须确保已将这些文件安装在node_modules中,请运行以下命令:
npm install-保存同构提取es6-promise
然后将其放在webpack条目属性中:
entry: [
'./node_modules/es6-promise/dist/es6-promise.auto.js',
'isomorphic-fetch',
'path for main file'
]
现在,在终端机/ cmd中键入 webpack 关键字,您应该在dist文件夹中找到一个文件(如果尚未指定其他输出路径),并且可以使用polyfill。
答案 3 :(得分:0)
我们需要添加一个polyfill以便在IE中进行抓取,请参考适合您的https://github.com/github/fetch