问题描述

在分析www.js里面的代码的时候,有:

var port = normalizePort(process.env.PORT || '3001');
app.set('port', port);

产生两个疑问:

  • 这里为什么不直接设 app.set(‘port’,‘3001’) ?
  • process.env.PORT是什么?

问题解疑

process.env.PORT是环境变量

在node中,有全局变量process表示的是当前的node进程。process.env包含着关于系统环境的信息。但是process.env中并不存在PORT这个变量。PORT是用户一个自定义的变量。

我们可以通过以下代码,来查看process的值:

console.log(process);

输出结果为:

$ node process.js
process {title: 'node',version: 'v4.4.4',moduleLoadList: [....],versions: { http_parser: '2.5.2',node: '4.4.4',v8: '4.5.103.35',uv: '1.8.0',zlib: '1.2.8',ares: '1.10.1-DEV',icu: '56.1',modules: '46',openssl: '1.0.2h' },arch: 'x64',platform: 'darwin',release: { name: 'node',lts: 'Argon',sourceUrl: 'https://nodejs.org/download/release/v4.4.4/node-v4.4.4.tar.gz',headersUrl: 'https://nodejs.org/download/release/v4.4.4/node-v4.4.4-headers.tar.gz' },argv: [ '/Users/tugenhua/.nvm/versions/node/v4.4.4/bin/node','/Users/tugenhua/个人demo/process.js' ],execArgv: [],env: { TERM_PROGRAM: 'Apple_Terminal',SHELL: '/bin/zsh',TERM: 'xterm-256color',TMPDIR: '/var/folders/l7/zndlx1qs05v29pjhvkgpmhjm0000gn/T/',Apple_PubSub_Socket_Render: '/private/tmp/com.apple.launchd.7Ax4C1EWMx/Render',TERM_PROGRAM_VERSION: '404',TERM_SESSION_ID: '82E05668-442D-4180-ADA3-8CF64D85E5A9',USER: 'tugenhua',SSH_AUTH_SOCK: '/private/tmp/com.apple.launchd.MYOMheYcL3/Listeners',PATH: '/Users/tugenhua/.nvm/versions/node/v4.4.4/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin',PWD: '/Users/tugenhua/个人demo',LANG: 'zh_CN.UTF-8',XPC_FLAGS: '0x0',XPC_SERVICE_NAME: '0',SHLVL: '1',HOME: '/Users/tugenhua',LOGNAME: 'tugenhua',SECURITYSESSIONID: '186a8',OLDPWD: '/Users/tugenhua/工作文档/sns_pc',ZSH: '/Users/tugenhua/.oh-my-zsh',PAGER: 'less',LESS: '-R',LC_CTYPE: 'zh_CN.UTF-8',LSCOLORS: 'Gxfxcxdxbxegedabagacad',NVM_DIR: '/Users/tugenhua/.nvm',NVM_NODEJS_ORG_MIRROR: 'https://nodejs.org/dist',NVM_IOJS_ORG_MIRROR: 'https://iojs.org/dist',NVM_RC_VERSION: '',MANPATH: '/Users/tugenhua/.nvm/versions/node/v4.4.4/share/man:/usr/local/share/man:/usr/share/man:/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/share/man:/Applications/Xcode.app/Contents/Developer/usr/share/man:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/share/man',NVM_PATH: '/Users/tugenhua/.nvm/versions/node/v4.4.4/lib/node',NVM_BIN: '/Users/tugenhua/.nvm/versions/node/v4.4.4/bin',_: '/Users/tugenhua/.nvm/versions/node/v4.4.4/bin/node',__CF_USER_TEXT_ENCODING: '0x1F5:0x19:0x34' },pid: 14034,features: { debug: false,uv: true,ipv6: true,tls_npn: true,tls_sni: true,tls_ocsp: true,tls: true },_needImmediateCallback: false,config: {},nextTick: [Function: nextTick],_tickCallback: [Function: _tickCallback],_tickDomainCallback: [Function: _tickDomainCallback],stdout: [Getter],stderr: [Getter],stdin: [Getter],openStdin: [Function],exit: [Function],kill: [Function],mainModule: Module {id: '.',exports: {},parent: null,filename: '/Users/tugenhua/个人demo/process.js',loaded: false,children: [],paths: [ '/Users/tugenhua/个人demo/node_modules','/Users/tugenhua/node_modules','/Users/node_modules','/node_modules' ] } }

我们可以看到在env这个变量里面,没有PORT变量。

所以对于代码:

var port = normalizePort(process.env.PORT || '3001');
app.set('port', port);

是先考虑到node的进程的环境变量的端口,再考虑3001端口号。

【node】express的www.js文件里面的process.env.PORT相关推荐

  1. [html] 说说js代码写到html里还是单独写到js文件里哪个好?为什么?

    [html] 说说js代码写到html里还是单独写到js文件里哪个好?为什么? js和html还是分开比较好,一是各功能独立,界面比较干净,二是方便管理,关系清晰,三是方便引用,一些公共js独立导入可 ...

  2. cli vue 外部js 引入 文件_javascript - vue cli构建的项目中,vue组件里怎么引入外部js文件里的方法...

    问 题 我想在content组件里调用外部js(test.js)里的diyfun方法,怎么实现呢? 我的content组件代码: Click export default { data () { re ...

  3. webStrorm js文件里 怎么去掉参数的下划线

    2019独角兽企业重金招聘Python工程师标准>>> webStrorm js文件里 怎么去掉参数的下划线 就如这种 File->Setting->Edito-> ...

  4. m3u8文件里面的key加密了,可以合并吗?

    m3u8文件里面的key加密了,可以合并吗? 如下图: ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190920191908689.png?x-oss-pro ...

  5. vue中js文件里获取this(vue实例)

    vue中js文件里获取this(vue实例) 1,在main.js中抛出vue实例,在需要用到的地方引入即可 main.js里let vueThis= new Vue({el: '#app',rout ...

  6. nodejs 获取系统环境变量_Node.js中环境变量process.env的一些事详解

    前言 最近这两天在和运维GG搞部署项目的事儿.碰到一个问题就是,咱们的dev,uat,product环境的问题. 因为是前后端分离,所以在开发和部署的过程中会有对后端接口的域名的切换问题.折腾了一下午 ...

  7. js文件里获取路由 vue_「如何优雅的使用Vue?」不可不知的Vue实战技巧

    作者: CHICAGO 转发连接:https://juejin.im/post/5e475829f265da57444ab10f 前言 在大家都会用vue的时代,我们又如何去区别是新手小白还是资深vu ...

  8. html调用js页面显示不出来了,JS代码文件调用显示乱码,直接写在html页面的里可以调用,但是单独放在js文件里不能调用...

    最近遇到了一个很奇怪的问题,就是在HTML网页代码里直接写JS代码可以正常运行的代码,使用JS文件调用就不行. var cities = [ { "name" : "北京 ...

  9. js文件里获取路由 vue_【源码拾遗】从vue-router看前端路由的两种实现

    本文由浅入深观摩vue-router源码是如何通过hash与History interface两种方式实现前端路由,介绍了相关原理,并对比了两种方式的优缺点与注意事项.最后分析了如何实现可以直接从文件 ...

最新文章

  1. Angular中使用JS实现路由跳转、动态路由传值、get方式传值
  2. nginx upstream setting
  3. 解决:Unable to identify index name. XXXModel is not a Document. Make sure the document class is annota
  4. shell脚本语之运算符
  5. JMETER badboy 录制脚本
  6. SqlServer中如何按姓氏笔画排序
  7. 基于php重庆旅游设计网站作品
  8. 完全自定义TabBar(八)
  9. CTP2交易所成交回报
  10. Drools7中文教程 文档 指南
  11. cygwin安装apt-cyg命令
  12. No installations recognized 以及 nvm use切换node版本无效的解决办法
  13. 按图搜索淘宝、天猫、1688商品API。(拍立淘API)
  14. 解决Win10桌面右键卡顿一直转圈圈的问题
  15. 前端学习日志-4-js
  16. Unity3D实现谷歌数字地球
  17. LeetCode 题集:字典树
  18. 好用免费的视频去水印工具软件,去水印微信小程序,操作简单,方便快捷,教你视频怎么水印
  19. 解决win7无法访问win2000共享的问题。
  20. Xamarin.Android开发及常见问题的解决

热门文章

  1. 【超详细】手把手教你使用YOLOX进行物体检测(附数据集)
  2. 温度对结构光深度的影响
  3. Machine Learning | (10) 回归算法-岭回归
  4. 【错误总结】Git- remote:error: this exceeds GitHub file size limit of 100.00 MB
  5. livechart 只显示 y 值_基于Python语言的SEGY格式地震数据读取与显示编程
  6. mSystems: 中科院动物所王德华组揭示低温下野生动物肠道菌群提高存活率的机制...
  7. Endnote X8云同步:家里单位实时同步文献笔记,有网随时读文献
  8. python使用matplotlib可视化、自定义移除X轴指定轴刻度标签(removing specific axis ticks in matplotlib x axis)
  9. R语言自定义多分类混淆矩阵可视化函数(mutlti class confusion matrix)、R语言多分类混淆矩阵可视化
  10. R语言ggplot2可视化使用geom_ribbon()函数向ggplot2图添加置信度带(Confidence Band、Confidence Interval)