【问题标题】:Running gulp-mocha tests on a new port in Express在 Express 的新端口上运行 gulp-mocha 测试
【发布时间】:2015-06-11 16:04:43
【问题描述】:

我已经搜索了所有内容,但似乎找不到答案。我希望能够让服务器在端口 4443 上运行,但同时运行“gulp test”并打开一个新端口,比如在 8888 上,运行测试然后关闭该端口。现在,当我运行“gulp test”并且服务器已经在端口 4443 上运行时,我得到一个Error: listen EADDRINUSE。 如何让它在新端口而不是 4443 上启动 gulp?

这是我的 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;

【问题讨论】:

    标签: node.js express gulp mocha.js


    【解决方案1】:

    您的 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() {
    ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-05
      • 2018-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-12
      • 1970-01-01
      相关资源
      最近更新 更多