Webpack导入类的功能未定义

时间:2018-02-07 21:10:50

标签: reactjs webpack ecmascript-6 babel

我在使用导入类中的函数时从webpack获取TypeError。

我得到TypeError: __WEBPACK_IMPORTED_MODULE_6_clients_FilesClient__.a.upload(...) is undefined

我正在通过以下方式导出我的课程:

export default(FilesClient = new FilesClient());

并将其导入我的组件:

import FilesClient from "clients/FilesClient";

当我像这样使用客户端时:

acceptedFiles.forEach(file => {
    FilesClient.upload(file, this.props.proposalId)
    .then(data => {
    ....

抛出类型错误。我不知道为什么会这样......我能够将对象以及函数记录到控制台并且请求成功,但是响应应用程序在响应恢复之前崩溃了。

这与我导出/导入其他几个客户端的方式相同,但是到目前为止我只用它们来制作GET请求...不确定为什么这个客户端搞砸了。我可以从这个客户端类中取出这个函数,这很好,只是想弄清楚Webpack的问题。

仅供参考,这是具有Webpack所说功能未定义的类:

import Client from "./Client";

class FilesClient extends Client {
  upload = (file, proposalId) => {
    const url = `/api/proposals/${proposalId}/uploadfile`;

    let formData = new FormData();
    formData.append("file", file, file.name);

    fetch(url, {
      method: "POST",
      body: formData
    }).then(response => {
      if (!response.ok) {
        console.log(response);
        throw Error("File upload failed", response);
      }
      return response.json();
    });
  }
}

export default (FilesClient = new FilesClient());  

提前致谢!

1 个答案:

答案 0 :(得分:0)

export default new FilesClient();

尝试这个它应该给你想要的结果,你现在做的是错的,因为它是一个任务,它什么都不返回。

这是codesandbox链接 example