Node.js 节点,反应,并发,EADDRINUSE::8000错误
我正在尝试将NPM包Node.js 节点,反应,并发,EADDRINUSE::8000错误,node.js,reactjs,express,server,Node.js,Reactjs,Express,Server,我正在尝试将NPM包与后端的Node/Express服务器同时使用,并在前端运行create react app的服务器。以下是package.json脚本: "scripts": { "start": "node index.js", "server": "nodemon index.js", "client": "yarn start --prefix client", "dev": "concurrently \"yarn server\" \"yarn client\"" }, 当我执
与后端的Node/Express服务器同时使用,并在前端运行create react app
的服务器。以下是package.json
脚本:
"scripts": {
"start": "node index.js",
"server": "nodemon index.js",
"client": "yarn start --prefix client",
"dev": "concurrently \"yarn server\" \"yarn client\""
},
当我执行warn dev
时,我得到以下错误:
$ concurrently "yarn server" "yarn client"
$ nodemon index.js
$ yarn start --prefix client
[0] [nodemon] 1.17.5
[0] [nodemon] to restart at any time, enter `rs`
[0] [nodemon] watching: *.*
[0] [nodemon] starting `node index.js`
$ node index.js --prefix client
[1] events.js:183
[1] throw er; // Unhandled 'error' event
[1] ^
[1]
[1] Error: listen EADDRINUSE :::8000
[1] at Object._errnoException (util.js:1022:11)
[1] at _exceptionWithHostPort (util.js:1044:20)
[1] at Server.setupListenHandle [as _listen2] (net.js:1367:14)
[1] at listenInCluster (net.js:1408:12)
[1] at Server.listen (net.js:1492:7)
[1] at Function.listen
...
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about
this command.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about
this command.
当我使用lsof-I tcp:8000时,它不返回任何内容。我不知道还能做什么。感谢所有的帮助
以下是服务器代码:
const express = require('express');
const mongoose = require('mongoose');
const keys = require('./config/keys');
const cookieSession = require('cookie-session');
const passport = require('passport');
require('./models/User');
require('./services/passport');
mongoose.connect(keys.mongoURI);
const app = express();
// enable cookies
app.use(
cookieSession({
// cookie good for 30 days
maxAge: 30 * 24 * 60 * 60 * 1000,
// authenticate cookie
keys: [keys.cookieKey]
})
);
// tell passport to use cookies
app.use(passport.initialize());
app.use(passport.session());
// get the routes
require('./routes/authRoutes')(app);
const PORT = process.env.PORT || 5000;
app.listen(PORT);
无论我将端口更改为什么,它都会为该端口提供相同的错误。好吧,您将执行两次index.js
,启动服务器侦听端口8000,这当然会触发错误:listen EADDRINUSE::8000
concurrently "yarn server" "yarn client"
warn服务器
运行nodemon index.js
纱线客户端
运行纱线启动
,执行节点索引.js
好吧,您正在执行两次index.js
,启动服务器侦听端口8000,这当然会触发错误:listen EADDRINUSE::8000
concurrently "yarn server" "yarn client"
warn服务器
运行nodemon index.js
纱线客户端
运行纱线启动
,执行节点索引.js
我通过运行以下命令解决了此问题:
killall node
我通过运行以下命令解决了此问题:
killall node
在您的package.json中将客户端脚本更改为此“客户端”:“纱线--cwd客户端启动”
在您的package.json中将客户端脚本更改为此“客户端”:“纱线--cwd客户端启动”
应该可以。你的服务器代码可以在这里提供帮助。用服务器代码编辑我用一种蹩脚的变通方法修复了它。我将脚本更改为:“client”:“cd./client&&warn start”
如果它有效,我想…@MMelvin0581为什么不为客户端服务器使用两个端口?抱歉,伙计,我不太清楚你的意思。下面是一个关于连接到Node/Express服务器的教程。create-react应用程序应该在localhost:3000上运行,我设置的节点服务器在5000上运行,这就是为什么我不明白为什么会发生冲突。但是我已经开始工作了。你的服务器代码可以帮上忙。用服务器代码编辑我用一种蹩脚的方法修复了它。我将脚本更改为:“client”:“cd./client&&warn start”
如果它有效,我想…@MMelvin0581为什么不为客户端服务器使用两个端口?抱歉,伙计,我不太清楚你的意思。下面是一个关于连接到Node/Express服务器的教程。create-react应用程序应该在localhost:3000上运行,我设置的节点服务器在5000上运行,这就是为什么我不明白为什么会发生冲突。但我已经成功了,明白了。我做的是最好的解决方法吗?有没有其他方法可以从/client
目录调用warn start
?我不知道您的服务器结构是什么,也不知道/client/package.json的内容是什么。您可以直接运行node client/index.js
而不是cd
它是来自create react应用程序的package.json,未经修改。脚本:“scripts”:{“start”:“react scripts start”,“build”:“react scripts build”,“test”:“react scripts test--env=jsdom”,“eject”:“react scripts eject”}
你所做的还不错,如果你喜欢它并且它可以工作,就去做吧。这只是为了开发,所以,像这样,它实际上应该可以工作(我现在使用的设置):“scripts”:{“server”:“nodemon index.js”,“client”:“npm run start--prefix client”,“dev”:“concurrent\”npm run server\“,“npm run client\”,“prod”:“NODE\u ENV=production nodemon app.js”,
Gotcha。我做的是最好的解决方法吗?有没有其他方法可以从/client
目录调用warn start
?我不知道您的服务器结构是什么,也不知道/client/package.json的内容是什么。您可以直接运行node client/index.js
而不是cd
它是来自create react应用程序的package.json,未经修改。脚本:“scripts”:{“start”:“react scripts start”,“build”:“react scripts build”,“test”:“react scripts test--env=jsdom”,“eject”:“react scripts eject”}
你所做的还不错,如果你喜欢它并且它可以工作,就去做吧。它只是为了开发,所以,像这样它实际上应该可以工作(我现在使用的设置):“scripts”:{“server”:“nodemon index.js”,“client”:“npm run start--prefix client”,“dev”:“concurrent\”npm run server\“,“npm run client\”,“prod”:“NODE\u ENV=production nodemon app.js”,