2015-02-22 3 views
3

Просто мигрировал по последнему экспрессу и застрял во что-то совершенно простом. Так, как это возможно, что это дистиллированный пример:process.env.NODE_ENV не соответствует «разработке» независимо от того, что

var env = process.env.NODE_ENV || 'development'; 
console.log(env); 
if ('development' == env) { 
    console.log('im here');  
} 
else { 
    console.log('nah');  
    console.log(env); 
} 

с этим файлом сервер запущенного в SET NODE_ENV = Разработка & узла server.js

дает выход:

development 
nah 
development 

вместо от

development 
im here 

К слову, i f Я просто установил var env = 'development', тогда он работает так, как должен.

экспресс 4.11.2, узел 0.12.0, win8 x64.

+2

По прихоти, я проверил бы лишние пробелы в строке. Единственная причина, по которой он должен был пропустить тест равенства, - это то, что строки фактически не равны. – Harangue

+0

попробуйте с 3 равными знаками сравнить строки === – Shaan

+0

Выполнение этого просто сделает сравнение еще более строгим, которое движется в противоположном направлении его проблемы. – Harangue

ответ

9

Ваш код выглядит отлично, поэтому причина, по которой тест равенства должен быть неудачным, заключается в том, что строки не равны. Убедитесь, что у вас нет дополнительных символов, таких как пробелы в строке разработки переменных среды.

+2

Ahaha yes J4G, вы совершенно правы, я запускал сервер через .bat-файл со строкой ET NODE_ENV = development & node server.js, и это пространство lil перед & фактически считалось пробелом в строке «development», стирается, работает, спасибо, эта проблема была смешной и раздражающей в своей простоте в одно и то же время. P.S .: Совершенное преступление XD –

+2

Я исправил это, обрезая полученную строку. 'var env = (process.env.NODE_ENV || 'development'). trim();' – Chic

+0

спасибо! мне очень помогли :) – Er85

4

У меня такая же проблема в режиме Windows. Я не уверен в Linux. Эта проблема вызвана пробелами между словом «разработка» с символом «&». Вы можете исправить, удалив пробелы в своей команде. Пример: SET NODE_ENV=development& node server.js