新版本的Chrome預設進入的網址通常會自動轉譯成Https,這會使單純只有Http的本機網站打不開,接著只能默默打開Firefox或其他瀏覽器,這時為了解決這個方法,不如我們也在本機的環境建立Https,雖然網路上有很多教學,有時打個關鍵字就可以找到,但每次建立新的專案就要打開不同的網站非常的麻煩,畢竟為了自己方便紀錄還是寫一篇,如此一來這篇教學就誕生了!

這個教學省略的大部分NodeJS的基礎教學,只專注在於建立Https這部分,詳細建立網站可以參考其他人的教學或是日後我惰性改善時我會在寫一篇我自己個人的藝術。

前置作業

首先我們需要確保我們有express, httpsfs的套件,另外我也會追加path套件,主要用來處理路徑問題,也可以透過下方指令進行安裝:

1
yarn add express https fs path

程式部分

接著開啟我們的Node檔案,追加關於https相關的程式:

1
2
3
4
5
6
7
8
9
10
11
12
13
const express = require('express');
const https = require('https');
const fs = require('fs');
const path = require('path');

const app = express();

const credentials = {
key: fs.readFileSync(path.join(__dirname, 'cert/key.pem'), 'utf8'),
cert: fs.readFileSync(path.join(__dirname, 'cert/cert.pem'), 'utf8'),
};
// create the monit to listen the https port.
https.createServer(credentials, app).listen(process.env.PORT_HTTPS);

接著同份檔案,在下方我們新增一個路由去測試這個網站:

1
2
3
4
app.get('/test', (req, res) => {
res.writeHead(200);
res.end('Super World');
});

建立認證

上述完成後,目前還無法使用https,主要我們需要建立一組憑證如上圖key.pemcert.pem等檔案,首先我們需要安裝mkcert套件:

1
brew install mkcert