Node.js 使用create-react-app通过更新json文件发布请求
我正在使用CreateReact应用程序制作一个项目。存在已配置的服务器等。我正在应用程序中使用react router dom进行路由。有“评论”部分。当它开始渲染自己时,它会转到我的本地json文件,并使用ajax从那里获取注释。当用户单击“提交”时,它会将带有表单字段的POST请求发送到同一个json文件。我有向json文件添加新对象的代码。当用户处于“/api/comments”路由时,它应该工作。这是将新对象添加到我的json文件(需要express)的代码:Node.js 使用create-react-app通过更新json文件发布请求,node.js,ajax,reactjs,express,react-router,Node.js,Ajax,Reactjs,Express,React Router,我正在使用CreateReact应用程序制作一个项目。存在已配置的服务器等。我正在应用程序中使用react router dom进行路由。有“评论”部分。当它开始渲染自己时,它会转到我的本地json文件,并使用ajax从那里获取注释。当用户单击“提交”时,它会将带有表单字段的POST请求发送到同一个json文件。我有向json文件添加新对象的代码。当用户处于“/api/comments”路由时,它应该工作。这是将新对象添加到我的json文件(需要express)的代码: 但我不知道如果我使用的是
但我不知道如果我使用的是“CreateReact应用程序”,并且它使用的是自己配置的服务器(据我所知),我应该把这段代码放在哪里。也许有一种方法可以改变“CreateReact应用程序”使用的服务器,并将此代码放在那里处理此路由?或者,也许有一种方法可以使用“react router”处理此路由?如果我正确理解您的问题,您在此处发布的代码是服务器端代码。您使用create react app创建的应用程序是前端应用程序,因此没有任何服务器端代码。但是,您可以托管第二台服务器,该服务器将公开所需的api路由,然后使用axios之类的http库调用该服务器。我正在使用
create react app
和express
作为我的api服务器。设置express
与webpack dev server
一起运行是create react app
支持的功能
我使用npm run all
在package.json
中定义的启动脚本中启动客户端和代理express api服务器。以下是我认为我需要做的一切:
webpack.config.dev.json
文件中,我在devServer
json块中定义了一个代理设置。明确地:
代理:{/api”:http://localhost:3001" },
package.json
文件中,我配置了一个启动脚本,它使用npm run all
同时启动react应用程序和express
server.js
启动express;这是我存储您在问题中概述的等效代码的地方`app.post('/api/comments', function(req, res) {
fs.readFile(COMMENTS_FILE, function(err, data) {
if (err) {
console.error(err);
process.exit(1);
}
var comments = JSON.parse(data);
var newComment = {
id: Date.now(),
author: req.body.author,
text: req.body.text,
};
comments.push(newComment);
fs.writeFile(COMMENTS_FILE, JSON.stringify(comments, null, 4),
function(err) {
if (err) {
console.error(err);
process.exit(1);
}
res.json(comments);
});
});
});`