2016-10-14 7 views
7

Я разрабатываю в node.js и хотел бы учитывать как среду разработки, так и разработку. Я узнал, что настройка NODE_ENV при запуске сервера node.js выполняет эту работу. Однако, когда я пытаюсь установить его в package.json сценарий он дает мне ошибку:NODE_ENV не распознается как внутренняя или внешняя команда

NODE_ENV is not recognised as an internal or external command

Ниже мой package.json

{ 
    "name": "NODEAPT", 
    "version": "0.0.0", 
    "private": true, 
    "scripts": { 
    "start": "NODE_ENV=development node ./bin/server", 
    "qa2": "NODE_ENV=qa2 node ./bin/server", 
    "prod": "NODE_ENV=production node ./bin/server" 
    }, 
    "dependencies": { 
    "body-parser": "~1.15.1", 
    "cookie-parser": "~1.4.3", 
    "debug": "~2.2.0", 
    "express": "~4.13.4", 
    "fs": "0.0.1-security", 
    "jade": "~1.11.0", 
    "morgan": "~1.7.0", 
    "oracledb": "^1.11.0", 
    "path": "^0.12.7", 
    "serve-favicon": "~2.3.0" 
    } 
} 

Я бегу мой сервер узла как: npm run qa2, например.

Я не знаю, что я делаю неправильно. Подсказка:

+0

какая операционная система вы используете – Jagrati

+0

Я развиваюсь на окнах os. Это имеет значение. –

+1

да вопросы os. для окон это 'SET NODE_ENV = узел разработки./bin/server' –

ответ

21

Поскольку вы используете windows operating system., команда отличается от используемой вами команды unix.

В окнах вы должны изменить свой сценарий как.

"scripts": { 
    "start": " SET NODE_ENV=development & node ./bin/server", 
    "qa2": "SET NODE_ENV=qa2 & node ./bin/server", 
    "prod": "SET NODE_ENV=production & node ./bin/server" 
    }, 

Использование SET и затем & после этого.

Однако с использованием cross-env рекомендуется пакет npm для обеспечения стабильности перекрестной платформы.

Установите его как npm install -S cross-env

"scripts": { 
    "start": " cross-env NODE_ENV=development & node ./bin/server", 
    "qa2": "cross-env NODE_ENV=qa2 & node ./bin/server", 
    "prod": "cross-env NODE_ENV=production & node ./bin/server" 
    }, 
+0

Спасибо, что решает мою проблему. –

10

Я могу предложить кросс-платформенный гуманного. Это делается с помощью пакета npm cross-env. Ваш раздел сценарий будет выглядеть следующим образом:

"scripts": { 
    "globals" : "npm i -g cross-env", 
    "start": "cross-env NODE_ENV=development & node ./bin/server", 
    "qa2": "cross-env NODE_ENV=qa2 & node ./bin/server", 
    "prod": "cross-env NODE_ENV=production & node ./bin/server" 
    } 

вы бежите один раз: (? Макинтош)

npm run globals // to install global dependencies 

Затем вы можете использовать скрипты как на Linux и Windows.

+0

Спасибо за ответ, но я думаю, что поеду с другим ответом. –

+0

Использование cross-env настоятельно рекомендуется, потому что вы никогда не знаете, кто попытается запустить ваш код. Другие разработчики, серверы, виртуальные ящики, компьютеры Mac, Linux и т. Д. – Joshua