4

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

"jquery": "global:$"

"jquery": "global:jQuery"

"jquery": "$"

"jquery": "jQuery"

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

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

4

1 回答 1

4

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

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

"jquery: $"

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

window.$ = require('jquery');

……或者干脆……

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

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

于 2016-01-08T17:27:44.070 回答