みかづきブログ その3

本ブログは更新を終了しました。通算140万ユーザーの方に観覧頂くことができました。長い間、ありがとうございました。

👆

引越し先はこちらです!

ElectronをつかってWebサーバをたてる際は絶対パスで指定しないとアプリ化したときに動かなくなる

kimizuka.hatenablog.com

以前つくったアプリ ですが、コマンドラインから実行する分には問題なかったのですが、アプリ化すると動かなくなってしまい困ってました。

結果として、パスを絶対パスにすることによって動くようになり、
アドレスを追加することによって他のデバイスからのアクセスも可能となりました。


JavaScript

main.js
(() => {

  "use strict";

  var electron      = require("electron"),
      http          = require("http"),
      nodeStatic    = require("node-static"),
      app           = electron.app,
      BrowserWindow = electron.BrowserWindow,
      file          = new nodeStatic.Server(__dirname + "/web/"), // 絶対パスに変更
      mainWindow;

  http.createServer((request, response) => {
    request.on("end", () => {
      switch (request.method) {
        case "GET":
          file.serve(request, response);
          break;
      }
    }).resume();
  }).listen(3000, "0.0.0.0"); // アドレスを追加

  app.on("ready", function() {
    mainWindow = new BrowserWindow({
      width      : 600,
      height     : 600,
      x          : 0,
      y          : 0,
      frame      : true,
      fullscreen : false
    });

    mainWindow.loadURL("file://" + __dirname + "/app/index.html");
  });

  app.on("window-all-closed", function() {  
    app.quit();
  });

})();

HTML

app/index.html
<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8">
    <title>APP</title>
  </head>
  <body>
    <h1>WEB SERVER</h1>
    <p>ブラウザで 0.0.0.0:3000 にアクセスしてください。</p>
  </body>
</html>
web/index.html
<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8">
    <title>WEB</title>
  </head>
  <body>
    <h1>WEB SERVER</h1>
  </body>
</html>