2015-07-10 13 views
9

Tôi nhận ra trước đây là một câu hỏi mơ hồ, nhưng tôi bị bối rối như những gì khác tôi có thể thử tại đây ...OpenShift: "Không thể thực hiện kiểm soát bắt đầu" trên ứng dụng nút

Tôi đã đã trải qua các câu hỏi SO khác và làm theo các đề xuất của họ nhưng cho đến nay vẫn chưa có gì giải quyết được vấn đề của tôi.

Đây là lỗi cụ thể mà tôi nhận được.

Stopping NodeJS cartridge 
Fri Jul 10 2015 10:36:28 GMT-0400 (EDT): Stopping application 'appname' ... 
Fri Jul 10 2015 10:36:29 GMT-0400 (EDT): Stopped Node application 'appname' 

Starting NodeJS cartridge 
Fri Jul 10 2015 10:36:30 GMT-0400 (EDT): Starting application 'appname' ... 

Waiting for application port (8080) become available ... 

Application 'appname' failed to start (port 8080 not available) 

Failed to execute: 'control restart' for /var/lib/openshift/MYID/nodejs 

tập tin package.json của tôi là đến nay tất cả sẽ phụ thuộc của tôi, có scripts: { start: 'node server.js' } tài sản và chưa tôi vẫn nhận được lỗi này.

Nếu tôi SSH vào và truy cập vào thư mục current/repo và chạy node server.js nó hoạt động tốt. Tuy nhiên, tôi không thể chỉ sử dụng screen để chạy trong nền mãi mãi.

Tôi cũng đã cố gắng dừng và khởi động lại, git đẩy và khởi động lại thông qua trình duyệt. Tôi stumped như những gì khác tôi có thể thử để có được (rất đơn giản) của tôi nút ứng dụng đang chạy trên OpenShift.

Bất kỳ đề xuất nào được đánh giá cao.

Trả lời

13

Đối với ứng dụng Nút mở nhanh, bạn cần chỉ định tập lệnh bắt đầu là: main: "server.js" thay vì sử dụng scripts. Điều này là do cách các ứng dụng Node được khởi động trên OpenShift bằng cách sử dụng node-supervisor.

+4

Vâng, nhờ nhận xét của bạn, tôi đã xem xét kỹ 'package.json' của tôi và thay vì một khoảng thời gian trong tên tệp dưới 'main' tôi đã có dấu phẩy. * facepalm * Cảm ơn! – Scheda

+0

Ngoài ra, có thể có một số lỗi cú pháp trong các tệp khác được yêu cầu khi bắt đầu. Tôi đã có một lỗi trong một tập tin phụ và không thể làm cho các ứng dụng bắt đầu cho đến khi tôi cố định các tập tin khác. – George

12

ứng dụng OpenShift Node yêu cầu bạn phải cung cấp cho các cấu hình để bắt đầu ứng dụng của bạn trong package.json dưới chínhscripts.start:

"scripts": { 
    "start": "node server.js" 
    }, 
"main": "server.js" 

Hơn nữa nó cũng đòi hỏi để cho nó IPPORT được cung cấp bởi môi trường nút của bạn thông qua các biến môi trường:

for PORT Number  process.env.OPENSHIFT_NODEJS_PORT 
for IP    process.env.OPENSHIFT_NODEJS_IP 

Nếu các biến này không được sử dụng trong ứng dụng, nó cho thấy lỗi mà trông giống như:

Waiting for application port (8080) become available ... 
Application 'appname' failed to start (port 8080 not available) 

Dưới đây là một ví dụ cho thấy làm thế nào để sử dụng các biến môi trường trong ứng dụng nút của bạn (từ nguồn):

var server_port = process.env.OPENSHIFT_NODEJS_PORT || 8080 
var server_ip_address = process.env.OPENSHIFT_NODEJS_IP || '127.0.0.1' 

server.listen(server_port, server_ip_address, function() { 
console.log("Listening on " + server_ip_address + ", server_port " + port) 
}); 

Nguồn: https://blog.openshift.com/run-your-nodejs-projects-on-openshift-in-two-simple-steps/

liên quan bài viết: Application 'appname' failed to start (port 8080 not available) on open shift node app

+0

Cũng đừng quên sử dụng {và a} xung quanh đoạn mã json, nếu không nó sẽ không biên dịch. – GlabbichRulz

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