2016-09-08 2 views
0

Я пытаюсь получить доступ к process.env.NODE_ENV внутри моего приложения, но я получаю «процесс не определен», если я его проверю.Невозможно установить NODE_ENV = производство с npm и webpack

package.json:

"scripts": { 
    "dev": "node ./node_modules/webpack/bin/webpack.js", 
    "prod": "NODE_ENV=production node ./node_modules/webpack/bin/webpack.js -p" 
}, 

webpack.config.js:

const NODE_ENV = process.env.NODE_ENV ? process.env.NODE_ENV.toLowerCase() : 'development';

и ниже:

plugins: [ 
    new webpack.DefinePlugin({ 
    'process.env': { 
     'NODE_ENV': JSON.stringify(NODE_ENV), 
     'URL_DEV': JSON.stringify("specificIP"), 
     'URL_PROD': JSON.stringify("OtherIP") 
    } 
    }) 
] 

В источнике приложения:

switch(process.env.NODE_ENV) { 
    case 'development': 
    url = process.env.URL_DEV; 
    break; 
    case 'production': 
    url = process.env.URL_PROD; 
    break; 
    default: 
    url = process.env.URL_DEV; 
} 

И кажется, что process не определен ... Что я здесь делаю неправильно?

+0

проверить, помогает ли это https://github.com/webpack/webpack/issues/2537? –

+0

Спасибо за подсказку, но я не могу заставить ее работать. На самом деле, кажется, я просто ничего не могу получить от «process.env», даже если я не пытаюсь передать переменную. Даже этот «URL_DEV»: JSON.stringify («specificIP»), похоже, не работает ... – Clafou

ответ

1

Я не совсем уверен, что если проблема возникла из моего scripts ключа внутри package.json но кажется NODE_ENV теперь установлен правильно, если я использую это:

"scripts": { 
    "dev": "cross-env NODE_ENV=development node ./node_modules/webpack/bin/webpack.js --progress --colors --bail", 
    "prod": "cross-env NODE_ENV=production webpack -p --progress --colors --bail" 
} 

Так что я на самом деле используется cross-env и ... он волшебным образом работает. Если у вас нет таких вариантов, как я, вы все равно можете сделать это.

Смежные вопросы