【问题标题】:(React-Native) undefined is not a constructor evaluating 'new FormData()'(React-Native) undefined 不是评估“new FormData()”的构造函数
【发布时间】:2019-02-17 10:02:20
【问题描述】:

在过去的 2 天里,我一直在努力解决这个问题,但无法弄清楚。 我不明白这个错误。这是我的代码:

try{
var formData = new FormData();
} catch (error) {
console.error('FormData ERROR', error);
}

这是错误:

017-06-21 13:49:02.761 [错误][tid:com.facebook.React.JavaScript] 'FormData ERROR', { [TypeError: undefined is not a constructor (评估'new FormData()')]行:98419,列:36,sourceURL: 'http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false' }

我必须在 ReactNative 0.45.0 中添加对 FormData 的支持吗? 请帮忙

【问题讨论】:

  • FormData 未定义,能否确定该对象存在于您的代码中?
  • @D-reaper 我该怎么做?我认为 FormData 包含在 react-native/libraries/network 中
  • console.log(FormData)。如果它是未定义的,那么你只需要确保将它包含在你的代码中。
  • 在 console.log(FormData) 之后我得到未定义。我尝试从 'react-native' 导入 { FormData };但仍然没有运气

标签: javascript react-native


【解决方案1】:

我也遇到了这个问题,那是因为我已经在上面导入了它们。 如果你像我一样做了:

import { FormData } from 'react';

import { FormData } from 'react-native';

只需从您的导入中删除“FormData”,它就会像魔术一样工作。无需导入 FormData 即可工作。

【讨论】:

  • @Cristi Milea 如果您还没有解决问题,请查看我的回答。谢谢!
  • 为我工作。不必导入 FormData。
【解决方案2】:

错误表明您是未定义的 FormData。由于它不是 react native 的一部分,你可能需要从 npm 下载它。

npm install --save form-data

然后在文件顶部导入它

import FormData from 'form-data';

【讨论】:

【解决方案3】:

如果

import { FormData } from 'react-native';

没有帮助的话你可以尝试直接导入:

import FormData from 'react-native/Libraries/Network/FormData';

【讨论】:

    【解决方案4】:

    我想我明白了。

    首先,我在我的 index.ios.js 中发现了一些东西(不知道我从哪里得到这些“提示”)并删除了它们

    // const _XHR = GLOBAL.originalXMLHttpRequest ?  
    //     GLOBAL.originalXMLHttpRequest :           
    //     GLOBAL.XMLHttpRequest                     
    
    // XMLHttpRequest = _XHR;
    
    // // FormData = global.originalFormData;
    

    然后我发现我的调试器(Chrome 或 RNDebugger)弄乱了我的网络请求,这对多部分图像对象不利。 (奇怪?!

    最后我得到了它的代码:

    var fdObject = new FormData();
    fdObject.append('avatar', {uri: PicturePath, name: 'avatar.jpg', type: 'image/jpg'});
    options.method = POST;
    options.headers['Content-Type'] = 'multipart/form-data';
    options.body = fdObject;
    fetch("http://api.com/post-my-image", options);
    

    【讨论】:

      猜你喜欢
      • 2021-12-13
      • 1970-01-01
      • 2019-06-10
      • 2019-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-14
      • 2022-01-23
      相关资源
      最近更新 更多