2016-10-14 13 views
7

Tôi đang phát triển trong node.js và muốn tính đến cả môi trường sản xuất và phát triển. Tôi phát hiện ra rằng thiết lập NODE_ENV trong khi chạy máy chủ node.js thực hiện công việc. Tuy nhiên khi tôi cố gắng để thiết lập nó trong kịch bản package.json nó mang lại cho tôi những lỗi:NODE_ENV không được công nhận là lệnh nội bộ hoặc bên ngoài

NODE_ENV is not recognised as an internal or external command

Dưới đây là package.json tôi

{ 
    "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" 
    } 
} 

tôi chạy máy chủ nút của tôi là: npm run qa2 ví dụ.

Tôi không biết mình đang làm gì sai. Bất kỳ trợ giúp nào được đánh giá là

+0

bạn đang sử dụng hệ điều hành nào – Jagrati

+0

Tôi đang phát triển trên windows os. Nó có quan trọng không. –

+1

có vấn đề về os. cho cửa sổ, đó là 'SET NODE_ENV = nút phát triển./bin/server' –

Trả lời

21

Vì bạn đang sử dụng windows operating system., lệnh này thay đổi từ lệnh hệ thống unix mà bạn đang sử dụng.

Trong cửa sổ, bạn phải sửa đổi tập lệnh của mình thành.

"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" 
    }, 

Sử dụng SET và sau đó là & sau đó.

Tuy nhiên, sử dụng gói cross-env npm để ổn định nền tảng chéo.

Cài đặt nó như 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

Cảm ơn nó giải quyết được vấn đề của tôi. –

10

Tôi có thể đề nghị nền tảng sollution chéo. Nó được thực hiện với sự giúp đỡ của gói cross-env npm. Phần kịch bản của bạn sẽ trông như thế này:

"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" 
    } 

Vì vậy, bạn chạy một lần: (? mac)

npm run globals // to install global dependencies 

Sau đó, bạn đang miễn phí để sử dụng các kịch bản của bạn trên cả Linux và cửa sổ.

+0

Cảm ơn câu trả lời, nhưng tôi nghĩ tôi sẽ đi với câu trả lời khác. –

+0

Sử dụng cross-env được khuyến khích, bởi vì bạn không bao giờ biết ai sẽ cố gắng chạy mã của bạn. Các nhà phát triển, máy chủ, hộp ảo, máy Mac, máy Linux khác, v.v. – Joshua

Các vấn đề liên quan