1 表象 控制台报错

截图没有完整的截下来,其实右边行号并没有具体的行号, 显示为payment-809e8ff.js 1

很明显 这是 js语法错误 但是当点击开里面显示的是html内容 第一行的 红色错误
首先第一眼看到这样的问题 直观感受是这问题 基本无法定位

但是实际上仔细看下可以发现 这个html并不是我们引用这个js页面的html页面, 而是跳转到了默认的404,
当我们再复制实际的这个js链接 到新的tab栏访问 才发现这个资源不存在,由此得出问题原因 资源不存在


下面为具体收银台项目记录一下

引发这个问题的原因为 为修改了 NODE_ENV

我们先看一下webpack.config.js
if (isProduction()) {config.output.publicPath = '';config.output.path = path.resolve(__dirname, 'build', 'js');config.output.filename = '[name]-[hash:7].js';config.output.chunkFilename = '[name]-[chunkhash:7].js';config.plugins = [new CleanPlugin('build/'),new AssetsPlugin({path: path.resolve('build/'),filename: 'manifest.json',prettyPrint: true}),new webpack.optimize.UglifyJsPlugin({mangle: true,compress: {warnings: false,drop_console: true,drop_debugger: true}})];
} else if (process.env.NODE_ENV === 'pre_test') {config.output.publicPath = '';config.output.path = path.resolve(__dirname, 'build', 'js');config.output.filename = '[name]-[hash:7].js';config.output.chunkFilename = '[name]-[chunkhash:7].js';config.plugins = [new CleanPlugin('build/'),new AssetsPlugin({path: path.resolve('build/'),filename: 'manifest.json',prettyPrint: true}),new webpack.optimize.UglifyJsPlugin({mangle: true,compress: {warnings: false}})];
} else if (process.env.NODE_ENV === 'pre') {config.output.publicPath = '';config.output.path = path.resolve(__dirname, 'build', 'js');config.output.filename = '[name]-[hash:7].js';config.output.chunkFilename = '[name]-[chunkhash:7].js';config.plugins = [new CleanPlugin('build/'),new AssetsPlugin({path: path.resolve('build/'),filename: 'manifest.json',prettyPrint: true}),new webpack.optimize.UglifyJsPlugin({mangle: true,compress: {warnings: false,drop_console: true,drop_debugger: true}})];
} else {config.output.publicPath = '/assets/';config.plugins = [new webpack.HotModuleReplacementPlugin()];config.entry.webpackDevServer= 'webpack/hot/only-dev-server';config.devServer = {clientLogLevel: 'warning',historyApiFallback: true,hot: true,compress: true,host: 'localhost',port: 9191,open: true,publicPath: '',quiet: true}
}

上面可以看出不同的环境变量我们加载不同的方式,比如生产环境我们是加载本地打包后的js文件
而最后一个else 则是起的本地webpackdevserver

我们再来看一下引用js文件的地方
var webpack = function(extension, bundle){if(process.env.NODE_ENV == 'production' || process.env.NODE_ENV == 'pre'){var manifest = JSON.parse(fs.readFileSync(__dirname + '/build/manifest.json'));var filename = manifest[bundle][extension];console.log(extension)if(extension == 'css'){return `/build/${filename}`;}else{return `/build/${extension}/${filename}`;}} else  if(process.env.NODE_ENV == 'pre_test'){var manifest = JSON.parse(fs.readFileSync(__dirname + '/build/manifest.json'));var filename = manifest[bundle][extension];return `/build/${extension}/${filename}`;} else{return `http://localhost:9191/assets/${bundle}.${extension}`;}
}

同样这里的功能和上面差不多根据不同的环境来决定是走本地文件还是走热启动的地址

我们只需要在html里这么引用就可以了
<script type="text/javascript" src="<%= webpack('js', 'payment') %>"></script>

NODE_ENV 还对一个地方有影响的是 pm2 启动方式

pm2的启动json 文件 process.json
{"apps": [{"name": "joybuy","script": "/export/server/starfish/server.js","exec_mode": "cluster","instances": "max","log_date_format": "YYYY-MM-DD HH:mm Z","merge_logs": true,"env": {"NODE_ENV": "development"},"env_production": {"NODE_ENV": "production"},"env_pre": {"NODE_ENV": "pre"}}],"deploy": {}
}
启动pm2 的命令
pm2 start /export/server/starfish/process.json --env pre

转载于:https://www.cnblogs.com/WhiteHorseIsNotHorse/p/9068504.html

一个NODE_ENV 引发的血案相关推荐

  1. 『转』度百死去飞秋一个BUG引发的血案

    作了一篇文章度百死去飞秋一个BUG引发的血案,昨天,度百死去的美国客户发邮件给我,说我的软件出问题了,我查来查去,发现居然是服务器上一个目录无法删除,一删除就报 cannot read from th ...

  2. 【Elasticsearch】es 一个数据精度引发的血案

    1.概述 在看博客的时候,发现有个博客 一个数据精度引发的血案 上面说,数据精度会丢失,然后我在 7.8.0版本的es测试,发现数据没有丢失. POST /index-lcc-0002/_doc {& ...

  3. ”一个馒头引发的血案“|记Mybatis之BindingException异常的产生及解决过程

    一. 业务场景 前几天壹哥带学生做一个项目,需要更新数据库中的车辆信息表,具体需求是要根据指定车辆的设备id(编号和设备ID均非主键)来更新车辆信息.壹哥要求学生们用Mybatis进行实现,所以就在对 ...

  4. 一个馒头引发的血案...请看完无极后观看此片,保笑死人不偿命

    一个馒头引发的血案... 采用搞笑的手法拍摄的,笑到你喷饭,极大的讽刺无极 下载地址:点击下载

  5. 摘要: Druid连接池一个设置引发的血案 -- 链接池出现问题

    摘要: Druid连接池一个设置引发的血案 今天在一台配置很低的机器上运行批量更新的程序~~~ 大概跑了三十分钟~~~这配置~~~这程序~~~ 然后华丽丽的报异常了~~~ 具体异常是这样的, DEBU ...

  6. 一个随机数引发的血案

    一个随机数引发的血案 我也来做一次标题党 原文地址:http://blog.csdn.net/WinsenJiansbomber/article/details/50604653 目录 一个随机数引发 ...

  7. 线上 CPU100% 异常案例:一个正则表达式引发的血案

    前几天线上一个项目监控信息突然报告异常,上到机器上后查看相关资源的使用情况,发现 CPU 利用率将近 100%.通过 Java 自带的线程 Dump 工具,我们导出了出问题的堆栈信息. 我们可以看到所 ...

  8. 一个“alert” 引发的血案

    0 在还没有掌握全部证据之前就下结论会犯严重的错误,会使判断带有偏见.--<血字的研究> "齐识,路老板又来邮件了."白娜一脸无耐地说. "一定没好事吧?&q ...

  9. 一个域名引发的血案……

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯游戏云 发表于云+社区专栏 你在沙发上看世界杯,黑客在做什么? 深夜,当电视机屏幕上那个小小的足球牵动着亿万人的心弦时,猜一猜黑客 ...

最新文章

  1. 关于Titandb Ratelimiter 失效问题的一个bugfix
  2. 1小时学会:最简单的iOS直播推流(八)h264/aac 软编码
  3. C#中自定义PictureBox控件
  4. python account_GitHub - Python3WebSpider/AccountPool: Account Pool
  5. DB2数据库常用工具
  6. LINUX正则表达式-- grep
  7. 《JavaScript高效图形编程(修订版)》——第2章 DHTML基础 2.1创建DHTML sprite
  8. 采购交货期延误的原因分析
  9. [Java核心技术(卷I)] - Java中的参数能做什么和不能做什么
  10. [前台]---js+jquery校验姓名,手机号,身份证号
  11. Ubuntu 16.04安装录屏软件SimpleScreenRecorder
  12. 实例教程三:文件的保存与读取
  13. excel培训机构_不会excel的,不是好地产人
  14. 【MATLAB】从文件读取:xlsread、load
  15. B站的热门视频要怎么同时批量下载保存到本地电脑中
  16. start-stop-daemon 用法
  17. 基于微信小程序+JavaWeb+SSM开发的图书借阅小程序
  18. 20189320《网络攻防》第二周作业
  19. 苹果手机smtp服务器没有响应,smtp服务器没有响应
  20. 学习Linux的几点忠告(转贴)

热门文章

  1. android omx,android OMX相关4:编码输入线程和输出线程
  2. ==和equals的简单比较
  3. 小眼睛适合大框还是小框眼镜_北京潘家园眼镜城良心商家推荐
  4. php如何word转html格式文件,PHP将上传word文件,转化为Html格式,(多种转换方式)
  5. java 查询线程_Java多线程查询
  6. 微型计算机实验代码,上师大,微型计算机实验全代码.doc
  7. linux 格式化 dvd,linux 服务器分区格式化相关知识 -mount
  8. sklearn中分类器的比较
  9. 第十六智能车竞赛总决赛获奖证书寄送
  10. 赛道公布之后,让我们一起DISS组委会