我在后端使用Nodejs,在前端使用reactjs。
我已经尝试过类似发布的问题的解决方案,但似乎没有一个可行。
中间件和路由:
const root = path.join(__dirname, '../../build');
app.use(express.static(root));
app.get('*', (req, res) => {
res.sendFile('index.html', { root });
});
app.use(cors());
app.use('/api', routes(app));
answer.post.js
try {
const answer = await Answer.create(answerReq);
console.log(answer);
res.send(answer);
} catch (error) {
next(new Error(error));
}
创建答案对象的位置,并按预期在控制台上显示。 在前端发布请求:
const apiEndpoint = "/api/answer";
axios.post(apiEndpoint, { data });
最奇怪的是,它可以在其他浏览器上运行,但不能在野生动物园中使用。在野生动物园中,我只会收到“网络错误”。
编辑:错误显示为警报
axios.interceptors.response.use(null, error => {
const expectedError =
error.response &&
error.response.status >= 400 &&
error.response.status < 500;
if (!expectedError) {
alert("Error: ", error);
}
return Promise.reject(error);
});
答案 0 :(得分:1)
对我来说,在端点的末尾添加 /
解决了这个问题(仅在 Safari 中发生),即尝试使用 /api/answer/
而不是 /api/answer
。
答案 1 :(得分:0)
通过切换到节点获取库来解决: https://www.npmjs.com/package/node-fetch
仍然对为什么使用axios时会发生问题的原因