2016-11-30 44 views
6

Otrzymuję ten komunikat o błędzie w aplikacji React/Redux, która jest zminimalizowana i spakowana przy pomocy Browserify i Gulp i wdrożona w Heroku.Redux NODE_ENV błędy z Gulp/Browserify

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.

Ale wydaje się, że etap budowy jest wykonywana w NODE_ENV = 'production'.

mam zadanie, które wyróżniają zmienne env Podobnie jak

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

a dzienniki na Heroku pokazać ENV jest produkcja:

enter image description here

Aby zagwarantować apply-prod-environment biegnie przed inne zadania, używam wtyczki Gulp RunSequence.

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

EDIT
drugiej próbie ..

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); 
    }); 
} 

wciąż otrzymuję ten sam błąd

trzeciej próbie ..

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); 
    }); 
} 

wciąż otrzymuję ten sam błąd

+0

Możliwy duplikat http://stackoverflow.com/questions/34479372/use-node-env-in-source-code-to-control- build-process-with-webpack –

Odpowiedz

5

zmagałem się z tym samym problemem i skończyło się używając loose-envify drwić zmienne środowiskowe, że chcę, aby zastąpić.

Wtedy, moim zadaniem łyk wyglądał następująco:

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

Hmm. to nadal nie działa. Czy jest coś jeszcze, co należy naprawić? –

+0

Nie pamiętam, co zrobiłem, ponieważ było to kilka miesięcy temu. Czy wiesz, czy Heroku uruchamia twoje zadanie "buildProd" jako część pakietu budującego? Czy uruchamiasz go lokalnie, a następnie przesuwasz gotowe pliki? –

+0

Zadanie buildProd działa na Heroku. Zbudowany dziennik mówi, że działa w "produkcji". –