使用 Browserify 时出现“Uncaught ReferenceError:jQuery 未定义”

Enc*_*PTL 4 jquery browserify browserify-shim

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

"jquery": "global:$"

"jquery": "global:jQuery"

"jquery": "$"

"jquery": "jQuery"

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

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

YPC*_*ble 5

Browserify-shim 假设您使用 Browserify 来填充非全局变量。这在某种程度上是 Browserify 的要点,即您不会污染全局范围或在全局范围上重新定义事物。

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

"jquery: $"
Run Code Online (Sandbox Code Playgroud)

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

window.$ = require('jquery');
Run Code Online (Sandbox Code Playgroud)

...或者简单地...

$ = require('jquery'); // Note no `var` here.
Run Code Online (Sandbox Code Playgroud)

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