目次
動作環境
Electron: 1.3.9
Express: 4.14.0
ElectronにWEBサーバーを設置したい
と言うわけで
ElectronにExpressを設置することにしました。
Express導入
まずはプロジェクトフォルダを作って、Expressを設置する。
mkdir Electron_kabanoki cd Electron_kabanoki npm i --save express npm i express-generator -g express npm install npm start
npm startをして、サーバーが立ち上がったら、ブラウザで以下URLにアクセス。
これで以下画像のページが出たら設置は完了です。
Electronを導入
次にElectronを導入します。
npm i electron --save npm init -y
続いて、プロジェクトフォルダにあるpackage.jsonの "main" のファイルを main.js に変更する。
{ "name": "electron-kabanoki", "version": "0.0.0", "private": true, "scripts": { "start": "node ./bin/www" }, "dependencies": { "body-parser": "~1.15.2", "cookie-parser": "~1.4.3", "debug": "~2.2.0", "electron": "^1.4.9", "express": "~4.14.0", "jade": "~1.11.0", "morgan": "~1.7.0", "serve-favicon": "~2.3.0" }, "main": "main.js", "devDependencies": {}, "keywords": [], "author": "", "license": "ISC", "description": "" }
書き換えが終わったら、app.jsと同じ階層にmain.jsファイルを作成する。
'use strict'; // Electronのモジュール const electron = require("electron"); const appExpress = require("./app"); // アプリケーションをコントロールするモジュール const app = electron.app; // ウィンドウを作成するモジュール const BrowserWindow = electron.BrowserWindow; // メインウィンドウはGCされないようにグローバル宣言 let mainWindow; // 全てのウィンドウが閉じたら終了 app.on('window-all-closed', function() { if (process.platform != 'darwin') { app.quit(); } }); // Electronの初期化完了後に実行 app.on('ready', function() { // メイン画面の表示。ウィンドウの幅、高さを指定できる mainWindow = new BrowserWindow({width: 800, height: 600}); mainWindow.loadURL('http://127.0.0.1:3000'); // ウィンドウが閉じられたらアプリも終了 mainWindow.on('closed', function() { mainWindow = null; }); });
最後に、app.jsに listen を設置する。
var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var index = require('./routes/index'); var users = require('./routes/users'); var app = express(); app.listen(3000, "127.0.0.1");// ←これを追加 // view engine setup app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'jade'); // uncomment after placing your favicon in /public //app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); app.use(logger('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); app.use(cookieParser()); app.use(express.static(path.join(__dirname, 'public'))); app.use('/', index); app.use('/users', users); // catch 404 and forward to error handler app.use(function(req, res, next) { var err = new Error('Not Found'); err.status = 404; next(err); }); // error handler app.use(function(err, req, res, next) { // set locals, only providing error in development res.locals.message = err.message; res.locals.error = req.app.get('env') === 'development' ? err : {}; // render the error page res.status(err.status || 500); res.render('error'); }); module.exports = app;
全てが完了したら、Electronを起動する。
electron ./
これで以下の画像のようになれば、OK