使用Browserify时获取“未捕获的ReferenceError:jQuery未定义”

时间:2015-05-07 21:53:05

标签: 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设置为全局,以便它可以访问它而不会抛出此错误。

1 个答案:

答案 0 :(得分:2)

Browserify-shim假设您使用Browserify来填充非全局变量。这有点与Browserify有关,您不会污染全球范围或重新定义全球范围内的事物。

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

"jquery: $"

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

window.$ = require('jquery');

......或者只是......

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

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