Express应用设置端口

  • 方法1 静态修改--直接修改代码中配置的默认端口号
  • 方法2 动态修改--修改代码逻辑使其获取启动命令中的端口号参数
  • 相关文章

在Express应用创建成功后,应用会自动配置一个端口号,比如3000,有时会遇到端口号被占用的情况,这时就需要修改端口号,下面提供了几种修改端口号的方法。

方法1 静态修改–直接修改代码中配置的默认端口号

根据项目的启动命令,找到项目根目录下bin/www文件,在其中修改默认端口号。

www文件内容如下:(原文件内容)

#!/usr/bin/env node/*** Module dependencies.*/var app = require('../app');
var debug = require('debug')('mock-data:server');
var http = require('http');/*** Get port from environment and store in Express.*/var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);/*** Create HTTP server.*/var server = http.createServer(app);/*** Listen on provided port, on all network interfaces.*/server.listen(port);
server.on('error', onError);
server.on('listening', onListening);/*** Normalize a port into a number, string, or false.*/function normalizePort(val) {var port = parseInt(val, 10);if (isNaN(port)) {// named pipereturn val;}if (port >= 0) {// port numberreturn port;}return false;
}/*** Event listener for HTTP server "error" event.*/function onError(error) {if (error.syscall !== 'listen') {throw error;}var bind = typeof port === 'string'? 'Pipe ' + port: 'Port ' + port;// handle specific listen errors with friendly messagesswitch (error.code) {case 'EACCES':console.error(bind + ' requires elevated privileges');process.exit(1);break;case 'EADDRINUSE':console.error(bind + ' is already in use');process.exit(1);break;default:throw error;}
}/*** Event listener for HTTP server "listening" event.*/function onListening() {var addr = server.address();var bind = typeof addr === 'string'? 'pipe ' + addr: 'port ' + addr.port;debug('Listening on ' + bind);
}

修改var port = normalizePort(process.env.PORT || '3000');这一行代码中的端口号即可。


方法2 动态修改–修改代码逻辑使其获取启动命令中的端口号参数

修改如下:
var port = normalizePort(process.env.PORT || '3000');这一行代码修改为如下内容:

/*** Get port number from process.argv or process.env or default.* process.env属性返回一个包含用户环境信息的对象.*/
function getPort() {if (!!process.argv[2]) { // 如果输入了端口号if (isNaN(process.argv[2])) { // 如果端口号不为数字,进行错误提示throw 'PORT ERROR: Please enter the correct port number.'} else { // 如果端口号输入正确,将使用该端口号return process.argv[2]}} else { // 如果未输入端口号,则获取用户环境信息中的端口号或者使用默认端口号return normalizePort(process.env.PORT || '3000');}
}
var port = getPort();

上述代码逻辑:

  1. 先从启动命令中获取端口号,如果可以获取到端口号且端口号可用,则使用该端口号,否则报错。
  2. 如果启动命令中没有指定端口号,则获取用户环境信息中的端口号,如果获取到端口号则使用该端口号,如果用户环境信息中不含端口号,则使用默认端口号。

上述代码修改完成后,使用npm start 端口号命令启动即可。

上述配置完成后,可以在多个终端使用不同的端口号启动项目。


相关文章

  • 搭建Express项目模拟后端接口数据返回

—— END ——

Express应用配置端口相关推荐

  1. SQL Server 2008 Express 安装配置详细教程

    SQL Server 2008 Express 安装配置详细教程 本文出自:http://it.agoit.com/thread-468537-1-1.html 下载 可以访问 Microsoft 下 ...

  2. Cisco 交换机配置端口镜像

    Cisco 交换机配置端口镜像 命令 全局模式下<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:of ...

  3. CentOS下开启配置端口转发

    开启IP转发 首先开启IP转发功能,默认是关闭的. 临时修改: # echo 1 >/proc/sys/net/ipv4/ip_forward 修改过后就马上生效,但如果系统重启后则又恢复为默认 ...

  4. linux vnc 改端口号,基于Linux中vnc配置端口号的修改方法

    vnc的默认端口是自己配置的,并不是这有一个端口号. 通过打开/etc/sysconfig/vncservers. 这里就配置了2个桌面,一个桌面号是1, 一个是2. 这里的配置的参数 VNCSERV ...

  5. 中国电信 商务领航送的cisco nav-10 wf配置端口转发

    网上找了一些关于 中国电信 商务领航送的cisco nav-10 wf配置端口转发的相关的帖子,但是好像就一个帖子里说后来电信给了他新的程序,刷机后正常了.后来再没有下文,他也没有把程序贴上去.我找到 ...

  6. 360网神防火系统 配置端口映射_IIS配置证书端口443无法访问

    原文阅读: IIS配置证书端口443无法访问 - 全球可信SSL数字证书解决方案-INFINISIGN​www.infinisign.com 使用Windows中的IIS服务器,我们在配置SSL数字证 ...

  7. Windows配置端口转发绕过samba 445端口限制共享linux磁盘

    概述 Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件.SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内 ...

  8. 打印机无法打印,配置端口显示错误?

    打印机无法打印,配置端口显示错误,请求的资源在使用中,其他电脑都能正常打印,唯独这一台电脑无法打印. 打开"运行",输入"services.msc",找到&qu ...

  9. H3C和华为配置端口聚合的问题

    今天中午想着去干个小活,给H3C和华为的交换机配置个端口聚合,本来想着5到10分钟搞定,结果最后搞了差不多一个小时,....无语 这次配置的H3C型号是S5130,华为的是S7706, 华为的设备配的 ...

最新文章

  1. 一个下载Windows镜像的地址
  2. Maria数据库怎么复制到mysql_maria(mysql)的主从复制
  3. 实战SSM_O2O商铺_11【商铺注册】Controller层的实现
  4. 瞎说系列之Object.assign入门
  5. 模拟ssh, hashlib模块, struct模块, subprocess模块
  6. react-性能优化
  7. 收发一体超声波测距离传感器模块_芜湖低功耗超声波液位计物位计设备排名
  8. 概率图模型更进一步的知识点
  9. java map 实例_java中map集合嵌套形式简单示例
  10. 有很帅气的微信头像推荐吗?
  11. 电子书分页,翻页效果,字体大小调整和基本功能实现
  12. c++ map的存储结构_深度解密Go语言之sync.map
  13. t3-财务通计算机名称,用友T3用友通财务软件操作方法
  14. 基于Android新闻RSS阅读器客户端app
  15. SPSS-季节性分析
  16. SpringBoot Actuator未授权访问漏洞修复
  17. C语言把十进制转换为二进制数的方法和示例
  18. CSS backdrop-filter 滤镜 毛玻璃效果
  19. [分享]高手是怎样炼成的:精妙SQL语句介绍
  20. 有没有什么赚钱的副业?分享,适合学生赚钱的30个副业!

热门文章

  1. KVell 单机k/v引擎:用最少的CPU 来调度Nvme的极致性能
  2. ubuntu18.04 Desktop版本部署13.2.6版本ceph
  3. s32v 开发板安装 apex 驱动
  4. .Net Core MVC初学习
  5. 关于eclipse的注释和反注释的快捷键
  6. ES6中的Promise详解
  7. oracle RAC的VIP和scan
  8. C++ 数据类型转换
  9. HTTP referer
  10. 巧用CSS的BlendTrans滤镜