2016-03-31 14 views
9

प्रत्युत्तर देना लोड नहीं कर रहा है मैं एक https node.js सर्वर शुरू करने की कोशिश कर रहा हूं।node.js https सर्वर

मैं एक प्रमाण पत्र बनाने और महत्वपूर्ण इस गाइड का पालन करके शुरू किया:

http://gaboesquivel.com/blog/2014/nodejs-https-and-ssl-certificate-for-development/

और मैं उन्हें अपने /app_name/security/keys निर्देशिका में रख दिया गया।

मेरी https सर्वर प्रारंभ करने के लिए, मैं निम्नलिखित है:

const https   = require('https'), 
     fs   = require('fs'); 

if(app.get('env') === 'development') { 

    console.log('dev env!!'); //prints correctly 
    console.log('port: ' + port); //prints correctly 
    const options = { 
     key: fs.readFileSync('./security/keys/key.pem'), 
     cert: fs.readFileSync('./security/keys/cert.pem') 
    }; 

    https.createServer(options, (req, res) => { 

     console.log('https good to go'); //this does not print out anything 

    }).listen(port); 

} 

जब मैं https://localhost:3000 पर जाते हैं, पेज एक त्रुटि फेंकता

This site can’t be reached 

localhost unexpectedly closed the connection. 
ERR_CONNECTION_CLOSED 

लेकिन वहाँ सर्वर साइड कंसोल पर कोई त्रुटि है। इसके अलावा, अगर मैं नियमित localhost:3000 में जाओ, मैं मिलता है:

The localhost page isn’t working 

localhost didn’t send any data. 
ERR_EMPTY_RESPONSE 

किसी की मदद कर सकते हैं?

अग्रिम धन्यवाद!

---- अद्यतन ----

मैं पोर्ट 443 पर अब चल रहा हूँ।

Error: listen EACCES 0.0.0.0:443 तो मैं भागा:

sudo NODE_ENV=development nodemon app

कौन सा किसी भी त्रुटि फेंक नहीं था शुरू में मैं एक त्रुटि मिल गया। हालांकि, जब मैं https://localhost:443 के पास गया, मैं:

This site can’t be reached 

localhost unexpectedly closed the connection. 
+0

मुझे लगता है कि इसके साथ संबंधित हो सकता है: var app = require('express')();

आप दो लाइन में इस परिभाषा विभाजित कर सकते हैं अगर यह अधिक पठनीय है बंदरगाह, https सामान्य रूप से 443 बंदरगाह पर काम करता है। तुम कोशिश कर सकते हो। –

+0

यदि कोई पोर्ट नहीं दिया गया है तो यह 443 पर काम करता है। पोर्ट निरंतर परिभाषित किया गया है। – tanaydin

+0

गोटा - मैंने 443 पर चलने की कोशिश की लेकिन मुझे अभी भी 'यह साइट तक नहीं पहुंचा जा सकता है'। मैंने अपने प्रश्न को अधिक त्रुटि विवरण के साथ अपडेट किया। –

उत्तर

-1

अपने कोड के साथ तो कई समस्याओं।

मैंने इसे वास्तव में जल्दी से परीक्षण किया।

कीवर्ड app और port क्रमशः लाइन 4 और 7 परिभाषित नहीं किया गया है।

इससे आपको एक वाक्यविन्यास त्रुटि फेंक देगी, जिससे कोड जारी रखने से रोकता है इसलिए सर्वर शुरू नहीं हो रहा है।

मैं मेरी टिप्पणी पर उल्लेख किया है, डिबग करने के लिए devtool का उपयोग करें और एक CLI devtool server.js -w जहां फ़ाइल परिवर्तन के लिए -w घड़ियों और मक्खी पर सर्वर पुन: लोड पर निम्न पंक्ति का उपयोग करें, जबकि विकासशील। यह भी मानते हुए कि आपने अपनी प्रविष्टि फ़ाइल server.js

0

मैंने वेब सर्वर के रूप में express का उपयोग किया था। express स्थापित करने के लिए:

npm install express --save 

मैं अपने कोड ले लिया, express में उपयोग कहा, openssl का उपयोग कर प्रमाणपत्र बनाया था, और यह मार डाला - सब अच्छा लग रहा था, सर्वर की थी, https पर बंदरगाह 3000 को सुनने के।

मेरा कोड (जो आपके कोड पर आधारित है ...):

var app = require('express')(); 
const https   = require('https'), 
     fs   = require('fs'), 
     port   = 3000; 

if(app.get('env') === 'development') { 

    console.log('dev env!!'); //prints correctly 
    console.log('port: ' + port); //prints correctly 
    const options = { 
     key: fs.readFileSync('/tmp/private.key'), 
     cert: fs.readFileSync('/tmp/publickey.crt') 
    }; 

    https.createServer(options, (req, res) => { 

     console.log('https good to go'); //this does message appears!!! ^_^ 

    }).listen(port); 

} 

कृपया तरह से मैं app परिभाषित करने के लिए ध्यान देना:

var express = require('express'); 
var app = express(); 
संबंधित मुद्दे