Electron——需要 Chromium 脚本中的模块
Electron -- requiring module in Chromium script
我正在尝试开发 Electron 应用程序,但在尝试从 Chromium 浏览器 window 中的另一个脚本 运行ning 中请求模块时遇到了问题。无论我如何指定相对路径,我总是遇到无法找到模块的相同错误。
我的项目是这样设置的:
index.html
scripts
controllers
controller.js
models
game.js
tests
spec
gameSpec.js
我的 index.html,这是电子启动时默认打开的页面,在 body 标签的末尾加载 controller.js 作为普通脚本。
<script src="scripts/controllers/controller.js"></script>
controller.js 顶部有以下代码:
var Game = require("../models/game.js");
.... some other code .....
var game = new Game();
在启动 electron Chromium window 后,我立即 运行 遇到了这个问题:
Uncaught Error: Cannot find module '../models/game.js'
我的假设是,我需要一个从 controller.js 文件到它正在导入的 game.js 文件的相对路径,但无论我进行何种调整,我总是得到那个错误。我不认为这只是一个语法错误,因为我在测试文件夹下有规范 运行ning 并通过它成功地使用了这样的要求:
var Game = require("../../models/game.js");
describe("Game", function () { ... });
我是否对从 Chromium 浏览器执行时如何完成 require 相对路径做出了错误的假设?感谢您的帮助!
也许更多的是一种解决方法而不是答案,但是如果你从这个交换你的脚本包含:
<script src="scripts/controllers/controller.js"></script>
为此:
<script>require('./scripts/controllers/controller.js')</script>
那么相对路径应该会如您所愿。
我 认为 当您包含具有 src
属性的脚本时,该文件中当前工作目录的内部上下文就是应用程序的根目录。
为什么?老实说,我不是 100% 确定。当包含为脚本 src
时,文件必须如何加载的限制?如果您真的 想继续使用 src
属性,这些在技术上可以在 controller.js
.
中使用
var Game = require(__dirname + '/scripts/models/game.js');
// or
var Game = require('./scripts/models/game.js');
不过,我不能全心全意地建议这两个选项中的任何一个。看起来很脆弱。
老实说,我以前从未注意到这一点,因为我通常会在 index.html
所在的相同位置包含一个指向我的应用程序的 javascript "entry" 点。
我正在尝试开发 Electron 应用程序,但在尝试从 Chromium 浏览器 window 中的另一个脚本 运行ning 中请求模块时遇到了问题。无论我如何指定相对路径,我总是遇到无法找到模块的相同错误。
我的项目是这样设置的:
index.html
scripts
controllers
controller.js
models
game.js
tests
spec
gameSpec.js
我的 index.html,这是电子启动时默认打开的页面,在 body 标签的末尾加载 controller.js 作为普通脚本。
<script src="scripts/controllers/controller.js"></script>
controller.js 顶部有以下代码:
var Game = require("../models/game.js");
.... some other code .....
var game = new Game();
在启动 electron Chromium window 后,我立即 运行 遇到了这个问题:
Uncaught Error: Cannot find module '../models/game.js'
我的假设是,我需要一个从 controller.js 文件到它正在导入的 game.js 文件的相对路径,但无论我进行何种调整,我总是得到那个错误。我不认为这只是一个语法错误,因为我在测试文件夹下有规范 运行ning 并通过它成功地使用了这样的要求:
var Game = require("../../models/game.js");
describe("Game", function () { ... });
我是否对从 Chromium 浏览器执行时如何完成 require 相对路径做出了错误的假设?感谢您的帮助!
也许更多的是一种解决方法而不是答案,但是如果你从这个交换你的脚本包含:
<script src="scripts/controllers/controller.js"></script>
为此:
<script>require('./scripts/controllers/controller.js')</script>
那么相对路径应该会如您所愿。
我 认为 当您包含具有 src
属性的脚本时,该文件中当前工作目录的内部上下文就是应用程序的根目录。
为什么?老实说,我不是 100% 确定。当包含为脚本 src
时,文件必须如何加载的限制?如果您真的 想继续使用 src
属性,这些在技术上可以在 controller.js
.
var Game = require(__dirname + '/scripts/models/game.js');
// or
var Game = require('./scripts/models/game.js');
不过,我不能全心全意地建议这两个选项中的任何一个。看起来很脆弱。
老实说,我以前从未注意到这一点,因为我通常会在 index.html
所在的相同位置包含一个指向我的应用程序的 javascript "entry" 点。