我在我的项目中使用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设置为全局,以便它可以访问它而不会抛出此错误。
答案 0 :(得分:2)
Browserify-shim假设您使用Browserify来填充非全局变量。这有点与Browserify有关,您不会污染全球范围或重新定义全球范围内的事物。
您的案例中的解决方案是使用此版本的声明jQuery:
"jquery: $"
...在您的package.json
中,然后通过以下方式在代码中明确定义全局:
window.$ = require('jquery');
......或者只是......
$ = require('jquery'); // Note no `var` here.
这将允许您在javascript包中使用require('jquery')
,但也可以通过全局范围直接在模板等内容中使用jQuery。