Babel 不转换 fetch api 代码

Posted

技术标签:

【中文标题】Babel 不转换 fetch api 代码【英文标题】:Babel doesn't convert fetch api code 【发布时间】:2018-08-24 14:41:38 【问题描述】:

fetch api 非常有用,但不幸的是它不适用于大多数浏览器,尤其是 Internet Explorer。我尝试使用 babel 将我的代码从 es6 转换为 es5,但它并没有解决这个问题。转为 es5 时仍然包含 fetch。我该如何解决这个问题。 这是 es6 代码:

var btnText = document.getElementById('btnText');
var btnJson = document.getElementById('btnJson');
btnText.addEventListener("click",fetchBtnText);
function fetchBtnText() 
  fetch("sample.txt")
    .then((response) => response.text())
.then((data) => console.log(data))

这里是到 es5 的转换

'use strict';
var btnText = document.getElementById('btnText');
var btnJson = document.getElementById('btnJson');
btnText.addEventListener("click", fetchBtnText);
function fetchBtnText() 
  fetch("sample.txt").then(function (response) 
    return response.text();
  ).then(function (data) 
    return console.log(data);
  );

【问题讨论】:

【参考方案1】:

你可以像这样使用 polyfill https://github.com/github/fetch

【讨论】:

你能解释一下为什么它不能转换吗? @StukedCoder Babel 是mainly used to convert ECMAScript 2015+ code into a backwards compatible version of javascript in current and older browsers or environments,正如他们的home page 所述,Fetch API 不是 ECMAScript/javascript 语言规范的一部分,而是 Web API 的一部分。有关详细信息,请参阅here。

以上是关于Babel 不转换 fetch api 代码的主要内容,如果未能解决你的问题,请参考以下文章

webpack之polyfill踩坑之路

将 Javascript Fetch 请求转换为 Angular Http 客户端不起作用

使用 babel 和 webpack 转换代码时,导出默认值不会被转换

如何在 JavaScript 中将 Ajax 转换为 Fetch API?

`babel-preset-react` 不使用 gulp 转换 jsx

使用 Fetch API 包含使用 XSLT 转换的 XML 文件