Windows で開発している Electron のプロジェクトを、Dropbox でフォルダを共有して、俺のモバイル環境である macOS でも開発できるようにできないか・・・と思って、macOS で起動した VSCode でそのフォルダを共有したんだけど、ターミナルで npm start をすると何のエラーも出ないが、すでに作り終えている画面も出てこないという状態に。
ども俺は誤解していたのだが、そのフォルダにインストールされた Electron の node_modules フォルダ以下は、Windows 用、macOS 用でそれぞれ別の「バイナリ」ファイルが入ってるのね。なんとなく「JavaScript で書かれたライブラリ集」だと思い込んでた(^^;;;
というわけで、プロジェクトフォルダを Dropbox で共有(同期)したあと、node_modules フォルダだけを「同期しない」設定にして共有から外し、中身を一旦全て消してから、他の macOS 上の Electron プロジェクトの node_modules を上書きコピーしてやる。これで、node_modules 以外のファイル(js、HTML、CSSなどのファイル)だけ同期されるので、Windows と macOS で同じプロジェクトを触れるようになる。
こうして文章で書くとややこしく感じられるが、要は「node_modules は同期しない」だけのことなのでそんなにややこしい話ではない。
例えば macOS 側で「同期する」設定のまま node_modules を更新してしまい Windows でうまく動かなくなっても、node_modules だけ他の Winodows のプロジェクトからコピーしてくればいいだけの話である。(install し直してもいいが、修正した JSON ファイルとかに新しいファイルが上書きされたりするといやなので、他のプロジェクトからコピーしてくるのが一番じゃないかと思う)
ちなみに、上記の作業をしたあとで、PostgreSQLに接続するための pg モジュールなども各 OS 用にインストールし直す必要がある。
それをせず実行すると、
~/Dropbox/timetron % npm startnpm notice run timetron@1.0.0 startnpm notice run electron .App threw an error during loadError: Cannot find module 'pg'<以下略>
こんな風にエラーでエラーになっちゃう。こういう時はその OS 上で install をしなおせばいい。
~/Dropbox/timetron % npm install pgnpm error code EEXISTnpm error syscall mkdirnpm error path /Users/shinoda/.npm/_cacache/content-v2/sha512/f9/banpm error errno -13npm error EACCES: permission denied, mkdir '/Users/shinoda/.npm/_cacache/content-v2/sha512/f9/ba'npm error File exists: /Users/shinoda/.npm/_cacache/content-v2/sha512/f9/ba
あり?エラー。どうも、npm install のときに、一度 sudo して実行してしまったため、shinoda ではなく root 権限でキャッシュが書かれてしまったようだ。
~/Dropbox/timetron % sudo chown -R 501:20 "/Users/shinoda/.npm"Password:<shinoda のパスワード>~/Dropbox/timetron % npm install pg
これでOK
~/Dropbox/timetron % npm startnpm notice run timetron@1.0.0 startnpm notice run electron .Downloading Electron binary...
これで、ばっちり Windows で開発していた画面がちゃんと起動した。動きもOK!!
電気ウナギ的○○
About Backコメント(0)
電気ウナギ的○○