Tìm kiếm trang web

javascript - Lỗi NODE_ENV của Redux với Gulp/Browserify


Tôi nhận được thông báo lỗi này trên một ứng dụng React/Redux đã được nén và đóng gói bằng Browserify và Gulp và triển khai lên Heroku.

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.

Nhưng có vẻ bước xây dựng đang được thực hiện trong NODE_ENV='production'.

Tôi có một nhiệm vụ thiết lập các biến môi trường như sau

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

Và nhật ký trên Heroku hiển thị ENV là production:

Để đảm bảo apply-prod-environment chạy trước các tác vụ khác, tôi đang sử dụng plugin Gulp RunSequence.

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

CHỈNH SỬA
Lần Thử Thứ Hai..

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

Vẫn gặp lỗi giống nhau

Lần Thử Thứ Ba..

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

Vẫn gặp lỗi tương tự

Câu trả lời #1

Tôi đã vật lộn với cùng một vấn đề này và cuối cùng tôi đã sử dụng loose-envify để mô phỏng các biến môi trường mà tôi muốn ghi đè.

Sau đó, nhiệm vụ gulp của tôi trông như thế này:

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