javascript - Electron——Chromium 脚本中需要模块

标签 javascript node.js module electron requires

我正在尝试开发一个 Electron 应用程序,但在尝试从 Chromium 浏览器窗口中运行的另一个脚本中获取模块时遇到了问题。无论我如何指定相对路径,我总是会遇到无法找到模块的相同错误。

我的项目是这样设置的:

    index.html
    scripts
        controllers
            controller.js
        models
            game.js
        tests
            spec
                gameSpec.js

我的index.html是Electron启动时默认打开的页面,它在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 窗口后,我立即遇到了这个问题:

Uncaught Error: Cannot find module '../models/game.js'

我的假设是我需要从controller.js 文件到它正在导入的game.js 文件的相对路径,但无论我进行何种调整,我总是会收到该错误。我不认为这只是一个语法错误,因为我在测试文件夹下的规范全部运行并通过,它成功地使用了这样的要求:

var Game = require("../../models/game.js");
describe("Game", function () { ... });

关于从 Chromium 浏览器执行时如何完成需要相对路径的假设,我是否做出了错误的假设?如有任何帮助,我们将不胜感激!

最佳答案

也许更多的是一种解决方法而不是答案,但如果您从此交换脚本包含:

<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“入口”点。

关于javascript - Electron——Chromium 脚本中需要模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41154033/

相关文章:

javascript - 如何使用 Google Analytics 设置页面标题?

javascript - 如何使用 jquery-footable 创建过滤器下拉列表?

node.js - 使用 Node 和 pg-promise 加入 postgres 中的值列表

scala - Sbt 多模块构建 - 维护模块 dep 图作为模块中的 libraryDependencies

javascript - 使用 JavaScript/jquery 将图像复制到剪贴板

javascript - 我正在从 jQuery 设置一个 href mailto,但我不知道如何设置目标 _blank

Node.js 在第一次启动时给出不可预测的 ajax 响应

node.js - 在 Node.js 中何时使用 next() 并返回 next()

python - 在不使用异常的情况下检查 Python 中的模块

php - 阻止 TOR 服务器