Bloggerがhttpからのローカルスクリプトを読み込んでくれなくなったので、httpsでサーバーをローカルサーバーを立てることが必要になりました。 live-server - npm このnode.jsのlive-serverを使うととても簡単にhttpsサーバーを立...
シェルコマンド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}`); }); }とりあえずこのコードを使うことにしました。
0 件のコメント:
コメントを投稿