Ax ios .post () с помощью fs.readFile () / fs.writeFile () - PullRequest
0 голосов
/ 12 февраля 2020

Я получаю запрос от моего клиента, я редактирую файл 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...

Как я могу прочитать (и записать) файл в моем топоре ios .post () запрос? я что-то здесь упускаю?

Изменить: мой клиент в настоящее время работает прокси на порт 3001

Ответы [ 2 ]

0 голосов
/ 12 февраля 2020

Похоже, порт меняется с первого набора журналов на второй набор журналов. Обратите внимание, что в первом он показывает порт 3002, и он работает, но во втором он показывает порт 3001. Второй говорит, что «адрес уже используется», и я уверен, что это относится к порту. Я хотел бы убедиться, что порт, на котором вы запускаете свой сервер, не используется, установив для него значение 3002, так как это похоже на первый.

0 голосов
/ 12 февраля 2020

Вы видите эту ошибку, потому что у вас есть другой проект, использующий тот же порт 3001

Найдите процесс, используя этот порт, с помощью

sudo lsof -i :3001

, а затем завершите процесс

kill -9 <PID>
...