我回到了一个古老的流动项目,我开始了一段时间,当我使用npm run dev
时,它似乎开始两次,并且正在抛出一个错误。它曾经工作 - 导致此错误的配置是什么?标准的可焊接配置应该在端口3000上运行两个Web服务器,在3001上运行一个吗?
> node webpack-dev-server.js & PORT=3001 nodemon start.js -e js,jsx
[nodemon] 1.8.1
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `node start.js`
Webpack Dev Server listening on port 3000
[nodemon] 1.8.1
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `node start.js`
using redis session
Application listening on port 3001
events.js:141
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE :::3001
我注意到在webpack-dev-server.js中它也调用了start.js.
var webpack = require('webpack');
var WebpackDevServer = require('webpack-dev-server');
var config = require('./webpack.config');
var shell = require('shelljs');
new WebpackDevServer(webpack(config), {
publicPath: config.output.publicPath,
hot: true,
historyApiFallback: true,
//quiet: true,
proxy: {
'*': { target: 'http://localhost:3001' }
}
}).listen(3000, function () {
shell.env.PORT = shell.env.PORT || 3001;
shell.exec('"./node_modules/.bin/nodemon" start.js -e js,jsx', function () {});
console.log('Webpack Dev Server listening on port 3000');
});
也许shell.exec调用start.js是多余的?
答案 0 :(得分:0)
我认为你的直觉是正确的。尝试运行此命令:
node webpack-dev-server.js
发生的事情是,节点程序(webpack-dev-server.js)在端口3000上启动webpack-dev-server,然后在端口3001上启动nodemon服务。您在终端中运行的命令正在使用一个&符,所以它也并行启动第三个服务器。该服务器也在端口3001上运行。
我怀疑引发的错误是由并行进程已经使用的端口引起的。