LoginSignup
1
2

More than 5 years have passed since last update.

Webpacker3.5.5にアップデートしたら、webpacker:compile で NODE_ENVが反映されない

Last updated at Posted at 2018-09-21

環境・前提

  • webpacker 3.5.5
  • React
  • rails

今関わっているプロジェクトでは、以下のような感じでDefinePluginNODE_ENVを使って、APIのURLなどの環境毎に異なるものを設定しています。

let apiUrl = '';
switch(env.NODE_ENV) {
  case 'staging':
    apiUrl = 'http://staging.com';
    break;
  case 'production':
    apiUrl = 'http://production.com';
    break;
  default:
    apiUrl = 'http://localhost:3000';
    break;
}

module.exports = {
  ・・・
  plugins: [
    new webpack.DefinePlugin({
      'apiUrl': JSON.stringify(apiUrl),
    }),
  ],
  ・・・
};

webpacker3.5.5にアップデートしてハマったこと

bundle exec rake webpacker:compile NODE_ENV=staging

を実行しても NODE_ENV=production で実行されてしまう。

これでは、stagingでもapiのURLが本番用になってしまうので、動作確認できない・・・

原因

ソースコードを見ると常にproductionで実行されるようです・・・。

↓v3.5.5のwebpacker:compile

namespace :webpacker do
  desc "Compile JavaScript packs using webpack for production with digests"
  task compile: ["webpacker:verify_install", :environment] do
    Webpacker.with_node_env("production") do
      ensure_log_goes_to_stdout do
        if Webpacker.compile
          # Successful compilation!
        else
          # Failed compilation
          exit!
        end
      end
    end
  end
end

対策

とりあえず、RAILS_ENVの値を使うようにして逃げた。

env.NODE_ENVenv.RAILS_ENV に変更。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2