EclipseのJavaScriptプロジェクトをルートにしたHTTPSサーバーを起動する

2019-05-24

KDE neonを使おう

t f B! P L
Bloggerがhttpからのローカルスクリプトを読み込んでくれなくなったので、httpsでサーバーをローカルサーバーを立てることが必要になりました。 live-server - npm このnode.jsのlive-serverを使うととても簡単にhttpsサーバーを立...
この手順でlive-serverをインストールしておきます。

シェルコマンドlive-serverで起動できるようになっているはずです。

HTTPSのルートにしたいJavaScriptプロジェクト下のどこかで次のjsファイルを置きます。
require('child_process').exec('\
 NVM_DIR="$HOME/.nvm";\
 [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh";\
 [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion";\
 live-server --port=8081 --cors;\
 ', (error, stdout, stderr) => {
 if (error) {
  console.error(`exec error: ${error}`);
 } else {
  stdout && console.log(`stdout: ${stdout}`);
  stderr && console.log(`stderr: ${stderr}`);
 }});
nvmを起動してからlive-serverをポート番号8081を指定して起動しています。

すでにポート番号8081が使われているときは異なるポート番号が使われます。

--corsオプションを付けずに起動するとこのサーバーにあるJavaScriptを読み込もうとすると Access-Control-Allow-Originがないと言われてアクセスできません。


プロジェクト内にtoolsフォルダを作成してその下にinvokehttpsserver.jsファイルに保存しました。

invokehttpsserver.jsを右クリック ー> Run As ー> 1 Node.js Application、これでHTTPSサーバーが起動します。

ルートはプロジェクトフォルダです。

そのURLはhttps://127.0.0.1:8081/です。

Eclipseから起動したliver-serverをシャントダウンさせる


live-serverを起動したまま再度live-serverを起動させるとポート番号が変わってしまいます。

Eclipseを終了させてもlive-serverは生きたままです。

これを終了させるにはプロセスを殺します。

Ctrl+Escでプロセス一覧を表示させます。


名前がnodeになっているプロセスにマウスカーソルをもっていくと起動したコマンドがわかるのでlive-serverを起動しているnodeを確認して終了させます。

常に同じポート番号でHTTPSサーバーを起動させる

const { exec } = require('child_process');  // destructuring assignment
// live-serverを起動しているnodeプロセスをkillする。
let cmds = 'ps xo pid,args | grep node| grep live-server | grep -v pid,args | sed -e "s/^[ ]*//g" | cut -d " " -f 1 | xargs kill -9'
exec(cmds, (error, stdout, stderr) => {
 if (error) {
//  console.error(`exec error: ${error}`);  // killするものがないときエラーがでるので出力を抑制する。
 } else {
  stdout && console.log(`stdout: ${stdout}`);
  stderr && console.log(`stderr: ${stderr}`);  
 }});
cmds = 'NVM_DIR="$HOME/.nvm";\. "$NVM_DIR/nvm.sh";\. "$NVM_DIR/bash_completion";live-server --port=8081 --cors;'
exec(cmds, (error, stdout, stderr) => {
 if (error) {
  console.error(`exec error: ${error}`);
 } else {
  stdout && console.log(`stdout: ${stdout}`);
  stderr && console.log(`stderr: ${stderr}`);
 }});
これで常にポート番号8081でHTTPSサーバーが起動するようになりました。

live-serverを起動する前に、すでに起動しているlive-serverのプロセスを調べてそれらをすべて終了させています。

起動させているサーバーがないときはkillに渡す引数がないのでエラーがでているので、エラー出力をコメントアウトしています。

exec error: Error: Command failed: NVM_DIR="$HOME/.nvm";. "$NVM_DIR/nvm.sh";. "$NVM_DIR/bash_completion";live-server --port=8081 --cors;
Killed

しかし起動しているサーバーがあってもこのようなエラーがでてきます。

動作には問題ありませんし、Konsoleからコマンドを実行してもこのようなエラーがでてこないので原因はいまのところわかりません(nvmとの関係?)。
const { exec } = require('child_process');  // destructuring assignment 
let cmds = 'ps xo pid,args | grep node| grep live-server | grep -v pid,args | sed -e "s/^[ ]*//g" | cut -d " " -f 1 | xargs kill -9'
execCmds(cmds)  // live-serverを起動しているnodeプロセスをkillする。動作になんらかのエラーが出る。
cmds = 'NVM_DIR="$HOME/.nvm";\. "$NVM_DIR/nvm.sh";\. "$NVM_DIR/bash_completion";live-server --port=8081 --cors;'
execCmds(cmds)  // live-serverを起動。
function execCmds(cmds){
 exec(cmds, (error, stdout, stderr) => {
   if (error) {
    console.error(`exec error: ${error}`);
   }
   stdout && console.log(`stdout: ${stdout}`);
   stderr && console.log(`stderr: ${stderr}`);
  }); 
}
とりあえずこのコードを使うことにしました。

ブログ検索 by Blogger

Translate

最近のコメント

Created by Calendar Gadget

QooQ