私はElectronアプリケーションで作業しようとしており、Chromiumブラウザウィンドウ内で実行中の別のスクリプトからモジュールを要求しようとしているときに問題が発生しています。相対パスを指定するために私が何をするにしても、モジュールを見つけることができないということについては、常に同じエラーが発生します。Chromiumスクリプトの電子要求モジュール
私のプロジェクトは、このように設定されています。本文の最後に通常のスクリプトとして起動し、負荷のcontroller.jsを電子時にデフォルトで育てページです
index.html
scripts
controllers
controller.js
models
game.js
tests
spec
gameSpec.js
私のindex.htmlを、タグ。
<script src="scripts/controllers/controller.js"></script>
controller.js上部に次のコードを持っている:電子クロムウィンドウを起動する際に
var Game = require("../models/game.js");
.... some other code .....
var game = new Game();
を、私は即座にこの問題に遭遇:
Uncaught Error: Cannot find module '../models/game.js'
私の仮定は、ということです私はcontroller.jsファイルから、それがインポートしているgame.jsファイルへの相対パスが必要ですが、どんな種類の微調整をしても、私はいつもそのエラーを受けています。私が必要と相対パス機能がある方法についての間違った仮定を作っています
var Game = require("../../models/game.js");
describe("Game", function() { ... });
:私はテストの下でスペックを持っているので、私は正常にこのように必要を使用するすべての実行中や受け渡しをフォルダ、それは単なる構文エラーだとは思いませんChromiumブラウザから実行すると完了しますか?どんな助けもありがとう!
返信いただきありがとうございます。残念ながらを要求していないため、同じエラーが発生します。幸いなことに、あなたの提案はvar game = require(__ dirname ....)は魅力的に機能しますが、私はそれが壊れやすく見えて、アプリをパッケージ化したいときに何が起こるか心配しています。私はノードを使わないで.Netからこのプロジェクトを変換しているので、私は移行の中で赤ちゃんのステップを取ろうとしています。 – user1433070
ここで問題となるのは、 'controller.js'はCommonJS/Nodeモジュールですが、' 'はCommonJSモジュールについては何も知らず、ノードのモジュールローダを経由せずに現在のドキュメントにファイルを保存する。 @dvlsgが 'controller.js'をロードする正しい方法は' require'を使うことです。 –