在Canary中使用带有ES2015模块的fetch

时间:2017-05-18 04:56:43

标签: module ecmascript-6 fetch-api

我在Chrome Canary版本60.0.3102.0中试用了ES2015模块。我的script.js文件如下所示:

jsonObject

我的fetchJSON.js文件如下所示:

import {fetchJSON} from './functions/fetchJSON.js';

const configFile = 'config.json';

const init = () => {
  fetchJSON(configFile)
    .then((data) => {        // code fails here at ln.7
      console.log(data);
  })
  .catch(error => console.log(error));
};

init();

我收到错误:

export function fetchJSON(url) {
  const fetchJSON = fetch(url)
    .then(response => response.json())
    .then(data => {
      console.log(data);      // data exists and is reported in the console
      return data;
    });
}

1 个答案:

答案 0 :(得分:3)

你的fetchJSON函数没有返回任何内容。因此,当您尝试在fetchJSON的结果上链接.then时,您将获得未捕获的TypeError - 未定义。

解决方案:在fetchJSON函数中返回Promise链:

export function fetchJSON(url) {
  return fetch(url)
    .then(response => response.json())
    .then(data => {
      return data;
    });
}