初 Electron & Node.js でハマったこと

初 Electron & Node.js 時にハマったこと

@blp1526

自己紹介

  • Vim を愛用しています
  • Fedora が好き

作った Electron アプリ

どちらも Mac 専用のコマンドを利用して作成

実演

自分なりの初 Electron 開発の進め方

  • 知り合いが作った小さなアプリをコミット順に写経して進め方を学ぶ
  • sindresorhus/awesome-electron からよさげなアプリを探して真似る

躓いたところ

  • 開発環境では動くがビルド環境では期待した挙動にならない
    • かといってビルド時にエラーが出るわけではない

原因と修正

Node.js の process.cwd()

開発環境の cwd について

  • 開発環境ではターミナルから Electron を起動していた
    • そのため、 cwd はターミナルの cwd となると思われる

開発環境の cwd を確認する

  • lsof -d wcd で確認
user{Darwin}[jobs:0]:~$ lsof -d cwd | grep -e Electron -e COMMAND
COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
Electron  20499 user  cwd    DIR    1,4      544 52951116 /Users/user/.ghq/github.com/blp1526/lightning-talks-timekeeper
Electron  20500 user  cwd    DIR    1,4      544 52951116 /Users/user/.ghq/github.com/blp1526/lightning-talks-timekeeper
Electron  20501 user  cwd    DIR    1,4      544 52951116 /Users/user/.ghq/github.com/blp1526/lightning-talks-timekeeper

ビルド環境の cwd について

  • 当然デーモンとして起動
    • man 3 daemon の通り、特に設定がされていなければ cwd は / のはず

ビルド環境の cwd を確認する

  • lsof -d wcd で確認
user{Darwin}[jobs:0]:~$ lsof -d cwd | grep -e Electron -e COMMAND
COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
Electron  20578 user  cwd    DIR    1,4     1224        2 /

まとめ

  • 普段 Web開発ばかりでビルドする機会がほとんどないからこその躓き
  • 公式のドキュメントを必ず参照しよう
    • Node.jsのディレクトリ参照の解説サイトに載っていたので、これがNode.jsの定石と勘違いしてしまった
  • 『なるほどUnixプロセス』を再読するいい機会となった