【问题标题】:Getting "Uncaught ReferenceError: jQuery is not defined" when using Browserify使用 Browserify 时出现“未捕获的 ReferenceError: jQuery is not defined”
【发布时间】:2015-05-07 21:53:05
【问题描述】:

我在我的项目中使用 browserify 并试图要求一个需要 jQuery 作为全局变量的模块。我使用了browserify-shim,一次设置为其中之一

"jquery": "global:$"

"jquery": "global:jQuery"

"jquery": "$"

"jquery": "jQuery"

但似乎仍然没有任何效果。使用全局 jQuery 的库也在 shim 中并设置为 "depends": ["jquery"]

Browserify 可以正确生成连接的 Javascript 包,但在运行 karma 测试时出现此错误Uncaught ReferenceError: jQuery is not defined。我在 karma.conf.js 中指定了相同的 browserify-shim 配置。如何将 jQuery 设置为全局的,以便它可以访问它而不抛出此错误。

【问题讨论】:

  • 嘿,如果您发布您的 package.json 文件会有所帮助。另外,您可能想查看stackoverflow.com/questions/24827964/…,它有一个非常相似的问题+答案。
  • 这没有帮助。我能够很好地构建捆绑包,但在运行业力测试时会出现问题
  • 这可能吗。将 jquery 暴露给 window.jQuery,以便使用 require 加载的其他模块可以引用 window.jQuery
  • 如果您不提供任何代码和更详细的说明来说明您是如何设置的,那么没有人可以帮助您

标签: jquery browserify browserify-shim


【解决方案1】:

Browserify-shim 假设您正在使用 Browserify 填充非全局变量。这就是 Browserify 的一点,你不会污染全局范围或重新定义全局范围内的东西。

您的解决方案是使用此版本的声明 jQuery:

"jquery: $"

...在您的package.json 中,然后通过以下任一方式显式定义全局代码中的某处

window.$ = require('jquery');

...或者干脆...

$ = require('jquery'); // Note no `var` here.

这将允许您在 javascript 包中使用 require('jquery'),但也可以通过全局范围在模板等内容中直接使用 jQuery。

【讨论】:

  • 相关:github.com/Semantic-Org/Semantic-UI/issues/…>。我在尝试使用 Browserify 创建包含语义 UI 的 bundle.js 时遇到了这个问题,window.jQuery = require("jquery"); 足以解决它。
猜你喜欢
  • 2015-08-11
  • 2014-09-16
  • 1970-01-01
  • 1970-01-01
  • 2015-01-29
  • 2020-12-26
  • 2019-06-22
  • 1970-01-01
  • 2020-05-24
相关资源
最近更新 更多