将 expo 从开发模式切换到生产模式时,我的 RSAA 调用无效,为什么?
When switching expo from develop mode to production my RSAA calls become invalid, why?
背景
我正在使用 expo 在 android phone 上查看我的 React 本机应用程序。我已经实现了一个节点服务器,应用程序从中检索数据。为了检索数据,我使用库 redux-api-middleware
并将其存储在 redux 存储中。
我之前在常规 React 应用程序中使用过此设置,但没有使用 react-native。
问题
当我在 expo 中将应用程序从开发模式切换到生产模式时,我对服务器的调用不再有效。我得到以下响应而不是开发模式下的数据。
Object {
"error": true,
"payload": [InvalidRSAA: Invalid RSAA],
"type": Symbol {
"_k": "Symbol(REQUEST_TEST_REQ)_l.b74uhq9lvf",
},
}
我的当前通话
import { RSAA } from 'redux-api-middleware';
import { NODE_API_URL } from 'react-native-dotenv';
export const REQUEST_TEST_REQ = Symbol('REQUEST_TEST_REQ');
export const REQUEST_TEST_SUC = Symbol('REQUEST_TEST_SUC');
export const REQUEST_TEST_FAIL = Symbol('REQUEST_TEST_FAIL');
const requestSomeDataFromTheServer = () => {
return {
[RSAA]: {
endpoint: `${NODE_API_URL}/api/test`,
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
types: [
REQUEST_TEST_REQ,
REQUEST_TEST_SUC,
REQUEST_TEST_FAIL
]
}
}
};
export { requestSomeDataFromTheServer };
问题
所以我遵循了 RSAA 请求的规则,但是在发出请求后我就看到了这个失败。它绝对不是我的节点服务器,因为它在开发模式下工作。有人可以为我阐明这个问题吗?
符号在生产模式下创建无效请求
我认为这可能是生产中获取的问题,所以我先添加了一个 polyfill,但这没有帮助。这给了我把一切都带回基础的想法,所以我把符号变成了字符串。
export const REQUEST_TEST_REQ = 'REQUEST_TEST_REQ';
export const REQUEST_TEST_SUC = 'REQUEST_TEST_SUC';
export const REQUEST_TEST_FAIL = 'REQUEST_TEST_FAIL';
通过将这些改回纯字符串,请求有效,所以我的问题就解决了。
我仍然不知道为什么这些符号在生产模式下会损坏,因为它们在开发中工作正常。此外,我正在使用 babel polyfill 使它们 "safe" 可以使用。
如果有人能解开这个谜团的其余部分,那就太好了。
背景
我正在使用 expo 在 android phone 上查看我的 React 本机应用程序。我已经实现了一个节点服务器,应用程序从中检索数据。为了检索数据,我使用库 redux-api-middleware
并将其存储在 redux 存储中。
我之前在常规 React 应用程序中使用过此设置,但没有使用 react-native。
问题
当我在 expo 中将应用程序从开发模式切换到生产模式时,我对服务器的调用不再有效。我得到以下响应而不是开发模式下的数据。
Object {
"error": true,
"payload": [InvalidRSAA: Invalid RSAA],
"type": Symbol {
"_k": "Symbol(REQUEST_TEST_REQ)_l.b74uhq9lvf",
},
}
我的当前通话
import { RSAA } from 'redux-api-middleware';
import { NODE_API_URL } from 'react-native-dotenv';
export const REQUEST_TEST_REQ = Symbol('REQUEST_TEST_REQ');
export const REQUEST_TEST_SUC = Symbol('REQUEST_TEST_SUC');
export const REQUEST_TEST_FAIL = Symbol('REQUEST_TEST_FAIL');
const requestSomeDataFromTheServer = () => {
return {
[RSAA]: {
endpoint: `${NODE_API_URL}/api/test`,
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
types: [
REQUEST_TEST_REQ,
REQUEST_TEST_SUC,
REQUEST_TEST_FAIL
]
}
}
};
export { requestSomeDataFromTheServer };
问题
所以我遵循了 RSAA 请求的规则,但是在发出请求后我就看到了这个失败。它绝对不是我的节点服务器,因为它在开发模式下工作。有人可以为我阐明这个问题吗?
符号在生产模式下创建无效请求
我认为这可能是生产中获取的问题,所以我先添加了一个 polyfill,但这没有帮助。这给了我把一切都带回基础的想法,所以我把符号变成了字符串。
export const REQUEST_TEST_REQ = 'REQUEST_TEST_REQ';
export const REQUEST_TEST_SUC = 'REQUEST_TEST_SUC';
export const REQUEST_TEST_FAIL = 'REQUEST_TEST_FAIL';
通过将这些改回纯字符串,请求有效,所以我的问题就解决了。
我仍然不知道为什么这些符号在生产模式下会损坏,因为它们在开发中工作正常。此外,我正在使用 babel polyfill 使它们 "safe" 可以使用。
如果有人能解开这个谜团的其余部分,那就太好了。