読者です 読者をやめる 読者になる 読者になる

みかづきブログ その3

3ヶ月つづけてみました。

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

JavaScript

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>