Javascript undefined不是一个函数(计算';t.map(函数(t){return u(t)})';)

Javascript undefined不是一个函数(计算';t.map(函数(t){return u(t)})';),javascript,reactjs,react-native,babeljs,Javascript,Reactjs,React Native,Babeljs,“未定义不是函数”可能是一个被广泛询问的问题。但是我找不到一个解决问题的方法 我的代码如下: 出现问题时如何调用函数: ... service.queryListToInfoList(response.data || []); ... 在职期间 export const queryListToInfoList = queryList => queryList.map(ql => queryToInfo(ql)); export const queryToInfo = query

“未定义不是函数”可能是一个被广泛询问的问题。但是我找不到一个解决问题的方法

我的代码如下:

出现问题时如何调用函数:

...
service.queryListToInfoList(response.data || []);
...
在职期间

export const queryListToInfoList = queryList => queryList.map(ql => queryToInfo(ql));

export const queryToInfo = query => { //some process; return {..}};
package.json

"dependencies": {
    ...
    "react": "16.5.1",
    "react-native": "^0.57.1"
    ...
 },
 "devDependencies": {
    ...
    "@babel/core": "^7.1.0",
    "@babel/plugin-external-helpers": "^7.0.0",
    "babel-core": "^7.0.0-0",
    "babel-preset-env": "^1.7.0",
    "metro-react-native-babel-preset": "^0.45.0"
    ...
 }
B.法律改革委员会

{
  "presets": ["module:metro-react-native-babel-preset"]
}
最后,我从一些不同的设备上得到了一些错误日志,上面写着:

“undefined不是一个函数(计算't.map(function(t){return u(t)})”,表示“QueryListInfoList”函数。但总的来说,它是有效的

queryList
始终是一个数组。(答复.数据)

是什么导致了这里的问题

提前谢谢

更新:


再进一步挖掘,我意识到所有这些错误日志都有一些共同点。此崩溃发生在Android意图之后,例如:电源断开、铃声模式更改、配置更改

这听起来可能很傻,您是否尝试将QueryListInfo列表作为
import{querylisttoinfo}from./path\u to service'
import querylisttoinfo-from./path\u to service'
。我看到这些错误通常在以错误的方式导入时发生

过了一会儿,我发现了问题。这是因为有时APISOUT/axios无法正确解析response.data。因此,它传递的不是对象,而是字符串,其余的在引用string.map()时抛出错误

问题就在这里

作为一种解决方法,我在设置response.data之前添加了类型检查,因此在api调用之后现在类似于以下内容:

if(response.ok && typeof response.data === 'object'){
  dispatch(setData(response.data || []));
}

注意,只有当预期数据实际上是对象类型时,这才可以。

在调用t.map之前尝试console.log它。听起来
queryToInfo
不是一个函数