微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ifprocess.env.NODE_ENV ==='production'总是为false

当试图通过从package.json脚本列表运行build命令来构build一个angular-webpack应用程序时:

"scripts": { "test": "NODE_ENV=test karma start","build": "if exist dist rd /s /q dist && mkdir dist && set NODE_ENV=production && webpack && cp app/index.html dist/index.html","start": "webpack-dev-server --content-base app" },

这是控制台上的结果:

$ npm run build > [email protected] build M:Learning webpackegghead.io - AngularJS - Angula r and Webpack for Modular Applicationswebpack-ng-egg > if exist dist rd /s /q dist && mkdir dist && set NODE_ENV='production' && webp ack && cp app/index.html dist/index.html process.env.NODE_ENV : 'production' process.env.NODE_ENV === 'production' ???? : false Hash: c3136b0024cbd48ccb2e Version: webpack 1.13.2 Time: 3185ms Asset Size Chunks Chunk Names bundle.js 1.23 MB 0 [emitted] main + 10 hidden modules

这是如何看起来像webpack.config.js文件

var webpack = require('webpack'); var path = require('path'); var config = { context: path.resolve(__dirname,"app"),entry:'./app.js',output: { path : __dirname + '/app',filename:'bundle.js' // il ne sera pas généré dans le code,juste en mémoire },plugins:[ new webpack.DefinePlugin({ ON_TEST:process.env.NODE_ENV === 'test' }) ],module:{ loaders: [ { test: /.js$/,exclude: /(node_modules|bower_components)/,loader: 'babel',// 'babel-loader' is also a legal name to reference query: { presets: ['es2015'] } },{ test: /.css$/,loader: "style-loader!css-loader",exclude: /(node_modules|bower_components)/ },{ test: /.html$/,loader: 'raw',// 'babel-loader' is also a legal name to reference },{ test: /.styl$/,loader: 'style-loader!css-loader!stylus-loader',exclude: /(node_modules|bower_components)/ } ] },devServer:{ //contentBase:path.join(__dirname,'dist') // ceci est juste un exemple,si dist est l'endroit ou on aurait généré les fichiers inline:true,// les mises à jour de style ne sont plus affichés instantnément avec cette option donc j'ai ajouté le watch:true et çà marché!!! watch:true } /*resolve: { extensions: ['','.js','.jsx','.css'] },resolveLoader: { root: require('path').resolve(__dirname,"node_modules") }*/ } console.log("process.env.NODE_ENV : " + process.env.NODE_ENV); console.log("process.env.NODE_ENV === 'production' ???? : " + (process.env.NODE_ENV == 'production')); //config.output.path = path.resolve(__dirname,"dist"); //console.log("config.output.path : " + config.output.path); if(process.env.NODE_ENV === 'production') { console.log("this is the prod env!!!!!!!!!!"); config.output.path = path.resolve(__dirname,"dist"); } module.exports = config;

这里的问题是,当testing(process.env.NODE_ENV === 'production')它永远不会返回true,即使它应该是(请参阅上面的控制台上logging的内容)。 我曾尝试过一种简单的平等而不是严格的平等,但仍然一直是错误的。

NGIX为AngularJS HTML5模式configuration模板和资产

独angular兽工人超时

WSS://my.domain.com/sockjs/362/4q059yw7/websocket

Karma&PhantomJS在TFS上运行不可靠

AngularJS SEO页面状态代码

AWS上的主机Java应用程序

带有prerender.io的Nginx / angular / node.js根URL

AngularJS + Ngingx CORS

AngularJS – 为什么当更改url$ routeProvider似乎不工作,我得到一个404错误

Google bot通过HTML5模式路线在AngularJS网站上爬行

我今天有这个问题。

当我用npm scripts set NODE_ENV=production && something , NODE_ENV=production会变成production + " " ,后面有一个空格。

所以,我们把production与production + " "比较production + " " ,这显然是错误的。

的package.json

scripts: { "start": "set NODE_ENV=development && webpack --watch --progress","test": "set NODE_ENV=production && webpack" }

比较

console.log(process.env.NODE_ENV.trim() === "production"); //True if ran test else false console.log(process.env.NODE_ENV === "production"); //False console.log(process.env.NODE_ENV.trim() === "development"); //True if ran start else false console.log(process.env.NODE_ENV === "development"); //False

webpack.config.js的工作示例

const webpack = require("webpack"); const dev = process.env.NODE_ENV.trim() !== "production"; module.exports = { entry: "./index.js",output: { path: "./",filename: "parse.js" },module: { rules: [ { test: /.js/,use: "babel-loader",exclude: /node_modules/ } ] },plugins: dev ? [] : [ new webpack.optimize.UglifyJsPlugin() ],target: "node" };

所以,使用trim() 。

问题是你在NODE_ENV存储单引号,所以NODE_ENV的值实际上是"'production'"而不是"production" 。 这在调试输出中很明显。

更改set NODE_ENV='production' set NODE_ENV=production ,它应该如你set NODE_ENV=production工作。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐