我已经搜遍过,但似乎无法找到答案。我希望能够在端口4443上运行服务器,但同时运行'gulp test'并打开一个新端口,比如8888,运行测试然后关闭该端口。现在,当我运行'gulp test'并且服务器已经在端口4443上运行时,我得到Error: listen EADDRINUSE
。
我如何让它在一个新的端口而不是4443上开始?
这是我的gulp文件
'use strict';
var gulp = require('gulp');
var jshint = require('gulp-jshint');
var jscs = require('gulp-jscs');
var stylish = require('gulp-jscs-stylish');
var livereload = require('gulp-livereload');
var mocha = require('gulp-mocha');
var gutil = require('gulp-util');
var noop = function () {};
// run 'gulp lint' in the console to run jshint and jscs on every .js file under the server folder
// and all its sub folders
gulp.task("lint", function(){
gulp.src("./server/**/*.js")
.pipe(jshint())
.pipe(jscs())
.on('error', noop)
.pipe(stylish.combineWithHintResults())
.pipe(jshint.reporter("jshint-stylish"));
});
// run 'gulp test' to run test suite
gulp.task('test', function(){
return gulp.src(['./server/assets/tests/specs/*.js'], {read: false})
.pipe(mocha({reporter: 'nyan'}))
.on('error', gutil.log)
.once('end', function(){
process.exit();
});
});
// run 'gulp watch' to watch all .js files and have livereload listen for changes
gulp.task('watch', function(){
livereload.listen();
gulp.watch('./server/**/*.js');
});
这是app.js
/**
* Node Server Configuration
*/
'use strict';
// Module dependencies.
var fs = require('fs');
var https = require('https');
var http = require('http');
var express = require('express');
var db = require('./server/api/models/db.js');
// Add coloring for console output
require('colors');
// self signed cert credentials
var credentials = {
key: fs.readFileSync('key.pem'),
cert: fs.readFileSync('cert.pem'),
passphrase: 'testing'
};
// Create Express server.
var app = express();
// ignoring the self signed certs in dev environment
if(app.get('env') === 'development') {
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
}
// Express configuration
require('./server/config/express')(app, express);
// Start Express server.
https.createServer(credentials, app)
.listen(app.get('securePort'), function() {
console.log('✔ Express server listening on port '.green + '%d'.blue + ' in '.green + '%s'.blue + ' mode'.green, app.get('securePort'), app.get('env'));
});
// Set up HTTP redirect
var httpApp = express();
var httpRouter = express.Router();
httpApp.use('*', httpRouter);
httpRouter.get('*', function(req, res){
var host = req.get('Host');
host = host.replace(/:\d+$/, ":" + app.get('securePort'));
var destination = ['https://', host, req.url].join('');
return res.redirect(destination);
});
var httpServer = http.createServer(httpApp);
httpServer.listen(app.get('port'));
module.exports = app;
答案 0 :(得分:0)
您的gulp任务看起来很好,您需要做的是更改应用监听的端口。您当前使用app.get('securePort')
设置了侦听端口,我猜这是在./server/config/express
的某处配置的,可以使用环境变量覆盖。
gulp-env是设置ENV变量的好选择
gulp.task('set-test-env', function () {
env({
vars: {
EXPRESS_SECURE_PORT: 8888
}
});
});
gulp.task('test', ['set-test-env'], function() {
...