NODE_ENV判断node服务器环境的设置

摘要:
redirectURL=http://sit.futurelab.tv/#/`myHomepageURL=`http://situser.futurelab.tv/#/myHomepage`talentURL=`http://sitevaluation.futurelab.tv/#/`raceURL=`http://sitrace.futurelab.tv/#/`breakcase`uat`:pubkey=`MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCWJ126MNN7ogwlQ9BY4T2JyOCq4U3LHvv6z0GkalxR0bXry2f8w7N84Nj62urdL8OpANnJgJbMEbjiOwtIMhWqUR952XhdFUdcHz1APJYvTYrvsyFJ9s0Yq5nU2If/3iSKqaJINHh9jPgJKqNXGoqRFTNzL/Da1wpIuJfyCRBxjQIDAQAB`baseURL=`https://apisit${APP}.futurelab.tv`loginURL=`http://uatuser.futurelab.tv/#/?redirectURL=http://uat.futurelab.tv/#/`registerURL=`http://uatuser.futurelab.tv/#/register?redirectURL=http://uat.futurelab.tv/#/`myHomepageURL=`http://uatuser.futurelab.tv/#/myHomepage`talentURL=`http://uatevaluation.futurelab.tv/#/`raceURL=`http://uatrace.futurelab.tv/#/`breakcase`production`:pubkey=`MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCy08YjtLFdeI/vKaVKKNjZwOqr7s6TXNVEUDdfXvVjwd/mrlxFFwDClcQFgf6rgBVc/6Tdu1XNmMcYN2qF3Qy2D98fEP/bLmTG0gAy5/qJ27WLHhxBbdgOn1cE7jDUvlnV/gunYgzZ/vVAAYnp5bd/waxJJKVqsrduEUAk90fEQwIDAQAB`baseURL=`https://api${APP}.futurelab.tv`loginURL=`http://user.futurelab.tv/#/?

NODE_ENV判断node服务器环境的设置第1张

NODE_ENV判断node服务器环境的设置第2张

build->webpack.sit.conf.js

拷贝webpack.prod.conf.js,新建webpack.sit.conf.js、webpack.uait.conf.js,根据环境修改env的引入文件

NODE_ENV判断node服务器环境的设置第3张

config->sit.env.js

NODE_ENV判断node服务器环境的设置第4张

build->bulid.js

NODE_ENV判断node服务器环境的设置第5张

src -> config文件夹 -> index.js

/**
 * @desc   公共配置URL
 * @author cjl
 */const APP =`portal`
let pubkey,baseURL,loginURL,registerURL,myHomepageURL,talentURL,raceURL
switch(process.env.NODE_ENV) {
  case`development`:
    pubkey = `MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCRDrgGC2QbaFrR33o62C/Ig39QKboH9arYs8hN6PkWhPfJz5NoUPXF465Bb7PgRqebMikguWxXR/bSqrABsD942hYeUfLBpyr7FnofVb3Drd4x9ESlH+gw6hCkzG4//xA1LqZDVWS0sBaMPQlq+A8rTVcANRxfJRbwY7jfgPvtyQIDAQAB`
    baseURL = 'http://49.4.25.185:8092'  //不同环境下的接口地址前缀loginURL = 'http://0.0.0.0:8081/#/'registerURL = 'http://0.0.0.0:8081/#/register'myHomepageURL = 'http://0.0.0.0:8081/#/myHomepage'talentURL = 'http://0.0.0.0:8081/#/'raceURL = 'http://0.0.0.0:8083/#/'
    break
  case`sit`:
    pubkey = `MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDJkdIk1D0UmFBs+3B4tFMfcKvsLmPr/OqiulLOpCNdY6MDNFzovp8Rw5I29ttusCupsYglmJzOTe1lXse99y046rzXv+1Sbw19OhyRUjshQOgWEEjxv3Nrsmn/Sbw3Fxn9hkmK0UNezXfPaTY5sT7YdhE93ZmAmpLODhvdq9yzMQIDAQAB`
    baseURL =`http://api.sit.futurelab.tv`  
   loginURL =`http://situser.futurelab.tv/#/?redirectURL=http://sit.futurelab.tv/#/`
    registerURL =`http://situser.futurelab.tv/#/register?redirectURL=http://sit.futurelab.tv/#/`
    myHomepageURL =`http://situser.futurelab.tv/#/myHomepage`
    talentURL =`http://sitevaluation.futurelab.tv/#/`
    raceURL =`http://sitrace.futurelab.tv/#/`
    break
  case`uat`:
    pubkey = `MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCWJ126MNN7ogwlQ9BY4T2JyOCq4U3LHvv6z0GkalxR0bXry2f8w7N84Nj62urdL8OpANnJgJbMEbjiOwtIMhWqUR952XhdFUdcHz1APJYvTYrvsyFJ9s0Yq5nU2If/3iSKqaJINHh9jPgJKqNXGoqRFTNzL/Da1wpIuJfyCRBxjQIDAQAB`
    baseURL =`https://apisit${APP}.futurelab.tv`
    loginURL =`http://uatuser.futurelab.tv/#/?redirectURL=http://uat.futurelab.tv/#/`
    registerURL =`http://uatuser.futurelab.tv/#/register?redirectURL=http://uat.futurelab.tv/#/`
    myHomepageURL =`http://uatuser.futurelab.tv/#/myHomepage`
    talentURL =`http://uatevaluation.futurelab.tv/#/`
    raceURL =`http://uatrace.futurelab.tv/#/`
    break
  case`production`:
    pubkey = `MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCy08YjtLFdeI/vKaVKKNjZwOqr7s6TXNVEUDdfXvVjwd/mrlxFFwDClcQFgf6rgBVc/6Tdu1XNmMcYN2qF3Qy2D98fEP/bLmTG0gAy5/qJ27WLHhxBbdgOn1cE7jDUvlnV/gunYgzZ/vVAAYnp5bd/waxJJKVqsrduEUAk90fEQwIDAQAB`
    baseURL =`https://api${APP}.futurelab.tv`
    loginURL =`http://user.futurelab.tv/#/?redirectURL=http://www.futurelab.tv/#/`
    registerURL =`http://user.futurelab.tv/#/register?redirectURL=http://www.futurelab.tv/#/`
    myHomepageURL =`http://user.futurelab.tv/#/myHomepage`
    talentURL =`http://evaluation.futurelab.tv/#/`
    raceURL =`http://race.futurelab.tv/#/`
    break
  default:
    throw new Error('unknown env')
}
export {
  pubkey,
  baseURL,
  loginURL,
  registerURL,
  myHomepageURL,
  talentURL,
  raceURL,
}

src -> httpConfig.js

js-cookie 官方文档

import Cookies from 'js-cookie'  //cookie在二级域名下共享,前提需 npm install js-cookie -- save
const isDev = process.env.NODE_ENV === 'development'
let config ={
  token: '',
  salt: '',
  nonce: '',
  timestamp: '',
  signature: ''}
if(isDev) {   //如果在dev环境,设置默认的cookie
  Cookies.set('common_login', {
    token: '27572d4df760f44d9e4d1213c29cdb43eca54392a6361dbdfadae7a89239e7de',
    salt: 'ZDIyYTBmNzJjOTQ1NDk0YzhiMjA5MWI1ZGNiZDBhMGQ=',
    timestamp: Date.now()
  })
  Cookies.set('userId', 2575976)
  Cookies.set('userName', 'admin')
  localStorage.setItem('token', '27572d4df760f44d9e4d1213c29cdb43eca54392a6361dbdfadae7a89239e7de')
  config.token = '27572d4df760f44d9e4d1213c29cdb43eca54392a6361dbdfadae7a89239e7de'config.salt = 'ZDIyYTBmNzJjOTQ1NDk0YzhiMjA5MWI1ZGNiZDBhMGQ='} else{   //非dev环境
  const commonLogin = Cookies.getJSON('common_login')
  if(commonLogin) {  //获取cookie,把数据存储在localStorage
    localStorage.setItem('token', commonLogin.token)
    localStorage.setItem('salt', commonLogin.salt)
    config.token = localStorage.getItem('token')
    config.salt = localStorage.getItem('salt')
  }
}

export default config

src->http.js

import axios from 'axios'import authconfig from './httpConfig'       //引入 httpConfig.js
import SHA256 from 'crypto-js/sha256'import uuidv4 from 'uuid/v4'
import {baseURL,loginURL} from '@/config'   //用到的url需从对应的文件中引入
const token =authconfig.token
const salt =authconfig.salt

axios.defaults.baseURL = baseURL  //配置ajax请求的域名头

//添加请求拦截器
axios.interceptors.request.use(
  config =>{
    if (localStorage.getItem('token')) {
      let timestamp =Date.now()
      let nonce =uuidv4()
      const sign =SHA256(`${timestamp}#${nonce}${salt}`).toString()
// 统一设置接口的请求头 config.headers[
'SESSION-TOKEN'] =token config.headers.NONCE =nonce config.headers.TIMESTAMP =timestamp config.headers.SIGNATURE =sign } returnconfig }, err =>{ returnPromise.reject(err) } ) //添加响应拦截器 axios.interceptors.response.use( response =>{ //response请求的第一层返回200,第二层返回401:token过期 if(response.data.status==401){ Cookie.remove('common_login',{domain:'.futurelab.tv'}); Cookie.remove('userId',{domain:'.futurelab.tv'}); Cookie.remove('userName',{domain:'.futurelab.tv'}); localStorage.removeItem('token'); localStorage.removeItem('salt'); window.location.href=`${loginURL}` } returnresponse }, error =>{ //response请求第一层返回错误代码号 if(error.response) { } returnPromise.reject(error.response.data) } ) export default axios

package.json

修改package.json配置,实现不同环境包的打包命令

npm run build:sit    //打包sit包
npm run build:uat    //打包uat包
npm run build          //打包生产包

1、安装 cross-env :cross-env能跨平台设置及使用环境变量

npm install cross-env --save

2、修改scripts部分:配置跨平台环境变量NODE_ENV判断node服务器环境的设置第6张

.gitignore  

NODE_ENV判断node服务器环境的设置第7张

免责声明:文章转载自《NODE_ENV判断node服务器环境的设置》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇JAVA中java.util.Date、java.sql.Timestamp和String之间的互相转换CentOS7只有lo网卡下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

谷粒商城学习——P124 es 自定义扩展词库

P122中安装的ik分词器, 本身默认的词库并不支持一些新的词汇,这就需要修改ik分词器的配置文件,指定远程词库进行扩展词库。ik分词器向远程发送请求要到最新的单词,这样最新的单词就会做为新的词源远行分解。可以给nginx发送请求,nginx反回最新词库。 虚拟机装nginx,内存不够,先将虚拟机关机,打开设置,将内存调到3075,然后重启      然...

C#修改SVG图片显示大小

private void Main() { if (File.Exists(_svgFile)) { SetSvgSize(_svgFile, spnWidth.Value, spnHeight.Value); }...

25、Flask实战第25天:项目结构搭建

创建一个虚拟环境bbs,并安装flask框架 #cmd进入DOS窗口 mkvirtualenv bbs pip install flask 在本地磁盘D新建项目目录:bbs 打开pycharm,创建flask项目 新建两个文件,config.py( 配置文件)、exts.py(用于第三方库) 项目分为前台(front)、后台(cms)、公共(commo...

将文件以流的形式另存为下载

//【1】附件为本地磁盘路径(附件可以为图片、pdf、word等等)string strFile = Server.MapPath("/images/526763.pdf"); using (FileStream fs = new FileStream(strFile, FileMode.Open)) { byte[] bytes = new b...

Flask-爱家租房项目ihome-01-项目框架的搭建

项目介绍 该项目是一个简易版的租房平台项目, 房东可以在平台上发布自己的房源, 房客可以搜索心仪的房源并进行一定时间的租赁. 主要功能模块包括用户模块(注册/登录/个人信息), 租房首页, 房屋列表页,房屋详情页, 房屋预订页, 支付宝支付等. 该项目属于不完全的前后端分离, 前端使用的是html+css+jquery, 后端使用的是flask框架, 后端...

SpringCloud入门之常用的配置文件 application.yml和 bootstrap.yml区别

SpringBoot默认支持properties和YAML两种格式的配置文件。前者格式简单,但是只支持键值对。如果需要表达列表,最好使用YAML格式。SpringBoot支持自动加载约定名称的配置文件,例如application.yml。如果是自定义名称的配置文件,就要另找方法了。可惜的是,不像前者有@PropertySource这样方便的加载方式,后者的...