node.js - axios.post() 和 fs.readFile()/fs.writeFile()
问题描述
我收到来自客户端的发布请求,我正在编辑存储在服务器本地的 JSON 文件
const dataPath = './data.json';
以上是我的数据路径
app.post('/table', (req, res) => { // CREATE
const id = req.body.params.id
console.log("reqid", id)
rowdata = req.body.params.userdata
console.log("rowdata", rowdata)
fs.readFile(dataPath, "utf-8", function(err, data){
if(err){
console.log(err)
}
console.log("axios post", data)
})
});
以上是我的帖子请求中的代码。当 readFile 函数被这样注释掉时:
app.post('/table', (req, res) => { // CREATE
const id = req.body.params.id
console.log("reqid", id)
rowdata = req.body.params.userdata
console.log("rowdata", rowdata)
//fs.readFile(dataPath, "utf-8", function(err, data){
//if(err){
// console.log(err)
// }
// console.log("axios post", data)
// })
});
我能够启动开发服务器,并且能够同时运行我的客户端和服务器
> backendserver@1.0.0 dev /Users/Dustyik/Desktop/BTApp
> concurrently "npm run server" "npm run client"
[0]
[0] > backendserver@1.0.0 server /Users/Dustyik/Desktop/BTApp
[0] > nodemon server.js
[0]
[1]
[1] > backendserver@1.0.0 client /Users/Dustyik/Desktop/BTApp
[1] > npm start --prefix client
[1]
[0] [nodemon] 2.0.2
[0] [nodemon] to restart at any time, enter `rs`
[0] [nodemon] watching dir(s): *.*
[0] [nodemon] watching extensions: js,mjs,json
[0] [nodemon] starting `node server.js`
[1]
[1] > store@0.1.0 start /Users/Dustyik/Desktop/BTApp/client
[1] > set PORT=3002 && react-scripts start
但是,当 readFile 函数没有被注释掉时,我无法同时运行服务器和客户端,并且我的终端抛出了错误
[0] Error: listen EADDRINUSE: address already in use :::3001
[0] at Server.setupListenHandle [as _listen2] (net.js:1306:16)
[0] at listenInCluster (net.js:1354:12)
[0] at Server.listen (net.js:1442:7)
[0] at Function.listen (/Users/Dustyik/Desktop/BTApp/node_modules/express/lib/application.js:618:24)
[0] at Object.<anonymous> (/Users/Dustyik/Desktop/BTApp/server.js:20:5)
[0] at Module._compile (internal/modules/cjs/loader.js:955:30)
[0] at Object.Module._extensions..js (internal/modules/cjs/loader.js:991:10)
[0] at Module.load (internal/modules/cjs/loader.js:811:32)
[0] at Function.Module._load (internal/modules/cjs/loader.js:723:14)
[0] at Function.Module.runMain (internal/modules/cjs/loader.js:1043:10)
[0] Emitted 'error' event on Server instance at:
[0] at emitErrorNT (net.js:1333:8)
[0] at processTicksAndRejections (internal/process/task_queues.js:81:21) {
[0] code: 'EADDRINUSE',
[0] errno: 'EADDRINUSE',
[0] syscall: 'listen',
[0] address: '::',
[0] port: 3001
[0] }
[0] [nodemon] app crashed - waiting for file changes before starting...
[1] ℹ 「wds」: Project is running at http://192.168.1.74/
[1] ℹ 「wds」: webpack output is served from /
[1] ℹ 「wds」: Content not from webpack is served from /Users/Dustyik/Desktop/BTApp/client/public
[1] ℹ 「wds」: 404s will fallback to /index.html
[1] Starting the development server...
如何在我的 axios.post() 请求中读取(和写入)文件?我在这里错过了什么吗?
编辑:我的客户目前正在端口 3001 上运行代理
解决方案
您看到该错误是因为您有另一个项目使用相同的端口 3001
使用该端口搜索进程
sudo lsof -i :3001
然后杀死进程
kill -9 <PID>
推荐阅读
- c# - 如何将模型列表转换为多维数组c#
- java - 尝试插入最大值时,有序链表给出空指针
- c - 写入和打印两个字符串之间交替的组合时出现分段错误?
- python - 如何使用python selenium find_element_by_xpath 找出上面的关键字
- python-3.x - 如何使用 dictConfig 配置将日志文件保存到子目录中?
- ruby-on-rails - Rails devse - 给定 7 个参数的 sign_in 错误数量,预期为 2
- visual-studio-code - 无法输入 VS Code 终端?
- ios - Detox 不处理通用链接
- winforms - 在新选项卡中打开链接(dotnetbrowser winforms)
- google-cloud-platform - 由数据存储实体插入触发的 Google Cloud Function Storage