未捕获的错误:找不到模块“jquery”

2024-05-20

我在用Electron https://github.com/atom/electron制作桌面应用程序。在我的应用程序中,我正在加载一个外部站点(Atom 应用程序之外)可以说http://mydummysite/index.html http://mydummysite/index.html page.

这是我的应用程序的结构原子编辑器 https://atom.io/:

即它具有以下部分:

  1. main.js
  2. package.json
  3. nodemodules>jquery(加载jquery)

源代码:

main.js:

   'use strict';

    var app = require('app');

    app.on('ready', function() {
      var BrowserWindow = require('browser-window');

      var win = 
      new BrowserWindow({ width: 800, height: 600, show: false, 
               'node-integration':true });
      win.on('closed', function() {
        win = null;
      });

      win.loadUrl('http://mydummysite/index.html ');
      win.show();
    });

包.json:

{
  "name": "my-mac-app",
  "version": "5.2.0",
  "description": "My Mac Desktop App",
  "main": "main.js",
  "scripts": {
    "start": "electron ."
  },
  "author": "Me",
  "license": "ISC",
  "dependencies": {
    "jquery": "^2.1.4"
  }
}

外部页面 -http://mydummysite/index.html http://mydummysite/index.html页面代码:

<!DOCTYPE html>
<html>
  <head>
  </head>
  <body>
    <h1>Hello World!</h1>

  </body>
<script>

   var jqr=require('jquery');

</script>
</html>

当我运行上面的应用程序(通过将应用程序文件夹拖动到 Electron)时,外部页面(http://mydummysite/index.html http://mydummysite/index.html) 在 Electron 壳中加载 但有错误

未捕获的错误:找不到模块“jquery”

你能帮我找出这个问题的原因吗?

正如您在目录结构的屏幕截图中看到的,我已经将 jquery 模块安装到我的文件夹中,并且通过以下方式完成npm install jquery命令。

注意:一起玩require我尝试添加 JS 中的命令require("ipc")在我的外部页面中http://mydummysite/index.html http://mydummysite/index.html页面并且它正在工作,那么可能是什么原因require("jquery").

我是否在 Electron 中以正确的方式添加了外部模块(jquery)?

我是否缺少一些依赖package.json?

我已经尝试过的:

  • npm cache clean, npm install jquery(到我的应用程序文件夹)
  • npm install --save jquery
  • npm install jquery -g
  • npm rebuild
  • sudo npm install jquery -g
  • sudo npm install jquery
  • export NODE_PATH=/usr/local/lib/node_modules

这是抛出错误的位置的屏幕截图module.js

有人可以建议为什么吗require("ipc")正在工作并且require("jquery") not?

我的目标是将 jQuery 与电子应用程序一起使用,并实现节点集成。


tl;dr

与普通的 Nodejs 应用程序相反,您可以访问全局模块(例如位于/usr/bin/node),电子不会自动设置NODE_PATH环境变量。您必须手动将其设置为包含所需模块的所有路径。


Update:

问题的答案

why require("ipc")正在工作并且require("jquery") not?

可以在这个中找到issue http://git.io/vf8sF,声明系统/用户模块不应包含在模块的全局路径中

因为它们可能包含应用程序未附带的模块,并且可能使用错误的 v8 标头进行编译。

如果你看一下电子源 https://github.com/atom/electron/blob/master/atom/common/lib/init.coffee#L13你可以看到内部模块被添加到module.globalPaths:

# Add common/api/lib to module search paths.
globalPaths.push path.resolve(__dirname, '..', 'api', 'lib')

这就是为什么你可以访问ipc, app等,但不是您使用全局安装的模块npm install -g.


我刚刚用最新的试了一下electron-prebuilt https://github.com/mafintosh/electron-prebuilt版本与本地服务器提供与您提供的完全相同的 HTML 文件,我想我知道问题是什么:如果您不将路径附加到您的应用程序node_modules您的应用程序根目录下的目录NODE_PATH变量它不会起作用。所以你需要做这样的事情:

export NODE_PATH=/PATH/TO/APP/node_modules
electron /PATH/TO/APP

导出时NODE_PATH确保您提供绝对路径。


**Update 2:**

对评论的回答:

我收到 jQuery 未找到错误

是可以找到的这张票 http://bugs.jquery.com/ticket/14549。基本上,如果您使用 jQuery 的 npm 包或在 Electron 内的 HTML 文件中执行类似以下操作:

<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>

你得到的是一个factory而不是附加到全局上下文的实际 jQuery 对象(例如window)。正如我在一篇文章中提到的之前的回答 https://stackoverflow.com/a/31655513/2295964(还包含 jQuery 的源代码)

当您在 CommonJS 或提供类似环境的情况下需要 jQuery 时module and module.exports,你得到的是一个工厂,而不是实际的 jQuery 对象。

现在要使用该工厂(通过从 CDN 导入代码或者本地有可用的 npm 模块),您需要如下内容:

<script>
  window.jQuery = window.$ = require('jquery');
</script>

我写了一个article http://blog.quaintous.com/2015/07/31/jqery-node-mystery/这解释了 Node + jQuery 的组合。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

未捕获的错误:找不到模块“jquery” 的相关文章

  • 通过 JavaScript 获取表单名称

    我有一个简单的问题 但我在网上找不到好的解决方案 我有这个 HTML 代码
  • 如何在网站上使用 svg 元素制作块的屏幕截图?

    我在网站上创建了一个构造函数 其本质是将所选元素及其颜色 svg中的元素 添加到访问者选择的背景和背景颜色 png中的背景 中 然后必须单击 保存 结果 按钮并仅执行工作区的屏幕截图 我写了这个脚本 但它需要屏幕截图 但只有背景 并忽略选定
  • JavaScript 验证和 PHP 验证?

    我正在使用 jquery 验证插件来验证空表单 我还应该在 PHP 中检查一下以确保 100 正确吗 或者用 javascript 验证就可以了 谢谢 您应该始终在服务器上进行验证 如果用户以某种方式不使用 Javascript 提交表单
  • 按下回车键时不刷新页面

    我遇到了一些问题 只要表单中有输入 回车键就会触发页面刷新 下面的代码 如果按下回车并且文本区域 input 中没有输入任何文本 则不会刷新页面 但是如果按下回车并且 input中有输入或者光标位于文本区域 我不确定是什么触发了它 因为 s
  • React autoFocus 将光标设置为输入值的开头

    我有一个受控输入 最初显示一个值 我已将该输入设置为自动聚焦 但当我希望它出现在末尾时 光标出现在输入的开头 我知道这可能是因为自动对焦是在值之前添加的 但我不能 100 确定 在输入字段末尾完成光标初始化的最佳方法是什么 var Test
  • React Router v4 不渲染组件

    React Router v4 渲染组件存在问题 在应用程序初始加载时 它将呈现与 URL 相对应的正确组件 但是 任何后续的组件Link单击不会呈现所需的组件 图书馆 反应路由器 4 2 2 https reacttraining com
  • 如何使用角度材料在具有可扩展行的表格中创建嵌套垫表

    我有以下数据 id c9d5ab1a subdomain wing domain aircraft part id c9d5ab1a info mimetype application json info dependent parent
  • 如何使用 Javascript 设置查询字符串

    有没有办法使用 javascript 设置查询字符串的值 我的页面有一个过滤器列表 单击该列表时 它将更改右侧的页内结果窗格 我正在尝试更新 url 的查询字符串值 因此如果用户离开页面 然后单击 后退 按钮 他们将返回到最后一个过滤器选择
  • 如何清除NPM的https代理设置?

    如何清除NPM之前的ssl代理设置 好吧 我搜索了很多 但我得到的所有帖子主要是关于如何set公司网络中的代理 我尝试将代理设置为空 npm config set http proxy npm config set https proxy
  • mongodb 聚合 - 累积字段的不同组值

    如果我有Player表格文件 name String score Int 我有Group文档 其中组代表玩家列表 groupName String players ObjectID 玩家可以属于多个组 我想做一个聚合Player文档 按以下
  • 使用 Google 日历源时如何禁用 FullCalendar 中的活动链接?

    我正在使用 FullCalendar 库从 Google 日历加载日历中的事件 不幸的是 事件添加到日历后 它们是可点击的 当您点击该活动时 您会自动重定向到 Google 日历页面以查看该特定活动 或者如果您有足够的访问权限 则可以直接对
  • JavaScript eval("{}") 返回行为?

    根据ECMA 262 规范 http www ecma international org publications files ECMA ST Ecma 262 pdf 以下语句返回1 eval 1 eval 1 eval 1 var a
  • 如何使用 JavaScript 或 jQuery 克隆 HTML 元素的样式对象?

    我正在尝试克隆元素的样式对象 这应该允许我在更改后重置所述元素的样式 例如 el style left 50px curr style left 50px Modify the elements style The cloned style
  • 主页(网格)上的缩略图现在显得模糊。如何纠正?

    我不知道这看起来是否愚蠢 但从早上开始我就无法纠正这个突然出现在我的博客网站上的错误www candidopinions in http www candidopinions in 我有一个网格视图模板 其中博客文章中的特色图像作为调整大小
  • 在 iOS 7 Safari 中,如何区分通过边缘滑动与后退/前进按钮的 popstate 事件?

    在 iOS 7 Safari 中 现在有两种后退 前进导航方式 使用底部的传统后退 前进按钮箭头或从屏幕边缘滑动 我正在使用动画在 ajax 应用程序中的页面之间进行转换 但如果用户通过边缘滑动进行导航 我不想触发该转换 因为这本身就是一个
  • 滚动顶部不符合预期

    Note 由于上次忘记奖励而重新开放赏金 A Woff 大师已经给出答案 我想在用户展开某一行时到达该行 这样当最后一个可见行展开时 用户不必向下滚动即可查看内容 I used example tbody on click td green
  • 如何处理 MongoDB 的断开连接错误

    我在 Node js 进程中看到了这个未捕获的异常 Uncaught exception Error read ETIMEDOUT at TCP onStreamRead internal stream base commons js 16
  • 我想在“npm install”上下载一些资源,大概使用“预发布”脚本

    具体来说 我想在运行 npm install 时下载 angular min js 从我读到的here https npmjs org doc scripts html做这些事情的地方是在预发布脚本 它还提到我不需要依赖在系统上安装 wge
  • 如何通过索引访问 JSON 对象中的字段

    我知道这不是最好的方法 但我别无选择 我必须通过索引访问 JSONObject 中的项目 访问对象的标准方法是只写this objectName or this objectName 我还找到了一种获取 json 对象内所有字段的方法 fo
  • 使用velocity.js制作可拖动元素的动画

    我正在使用velocity js 为用户拖动的可拖动 SVG 元素设置动画 然而 velocity js 将先前的 mousemove 坐标排队并通过所有后续的 mousemove 坐标进行动画处理 我想要的是velocity js 不要对

随机推荐