2016-11-30 66 views
6

我在React/Redux应用程序中收到此错误消息,该应用程序已缩小并与Browserify和Gulp一起打包并部署到Heroku。Redux与Gulp/Browserify发生NODE_ENV错误

bundle.js:39 You are currently using minified code outside of NODE_ENV === 'production'. This means that you are running a slower development build of Redux.

但似乎构建步骤是在NODE_ENV = 'production'正在做。

我已经是设置在Heroku像这样

gulp.task('apply-prod-environment', function() { 
    return process.env.NODE_ENV = 'production'; 
}); 

的ENV变量和日志显示ENV任务是生产:

enter image description here

为了保证之前的apply-prod-environment运行其他任务,我正在使用RunSequence Gulp插件。

gulp.task('buildProd', cb => { 
    runSequence(
    'apply-prod-environment', 
    'task-1', 
    'task-2', 
    'etc', 
    cb 
); 
}); 

编辑
第二次尝试..

import envify from 'envify/custom'; 

function buildJS(sourceFile, {setEnv}) { 
    return browserify(sourceFile) 
    .transform(babelify, { 
     presets: ['es2015', 'react', 'stage-2'] 
    }) 
    .transform(envify({ 
     NODE_ENV: setEnv 
    })) 
    .bundle() 
    .on('error', (e) => { 
     gutil.log(e); 
    }); 
} 

仍然得到同样的错误

第三次尝试..

function buildJS(sourceFile, {setEnv}) { 
    return browserify(sourceFile) 
    .transform(babelify, { 
     presets: ['es2015', 'react', 'stage-2'] 
    }) 
    .transform(
     {global: true}, 
     envify({ 
     NODE_ENV: setEnv 
     }) 
    ) 
    .bundle() 
    .on('error', (e) => { 
     gutil.log(e); 
    }); 
} 

仍然得到同样的错误

+0

的可能的复制http://stackoverflow.com/questions/34479372/use-node-env-in-source-code-to-control-用webpack建立流程 –

回答

5

我这个同样的问题挣扎着,最后我用loose-envify嘲笑,我想重写环境变量。

然后,我一饮而尽任务是这样的:

gulp.task('javascript:prod', function() { 
return browserify("app/main.js", { debug: !IS_PROD }) 
    .transform("babelify", { presets: [ "es2015", "react" ], plugins: [ "transform-object-rest-spread", "transform-function-bind", "transform-object-assign" ] }) 
    .transform('loose-envify', { NODE_ENV: 'production' }) 
    .bundle() 
    .pipe(source('app.js')) 
    .pipe(buffer()) 
    .pipe(uglify()) 
    .pipe(rev()) 
    .pipe(gulp.dest("./public/javascripts/")) 
    .pipe(rev.manifest({merge:true, base: 'build/assets'})) 
    .pipe(gulp.dest('build/assets')); 
}); 
+0

嗯。这仍然不起作用。还有什么需要设置解决? –

+0

我不记得我做了什么,因为它是几个月前。你知道Heroku是否将buildProd作为构建包的一部分运行吗?还是你在本地运行它,然后推动预建的文件? –

+0

buildProd任务在Heroku上运行。生成日志表示它正在'生产'中运行。 –