首页 > 解决方案 > 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 上运行代理

标签: node.jsreactjsaxiosfs

解决方案


您看到该错误是因为您有另一个项目使用相同的端口 3001

使用该端口搜索进程

sudo lsof -i :3001

然后杀死进程

kill -9 <PID>

推荐阅读