Trying to use jquery and jquery-ujs with Browserify but getting Uncaught ReferenceError: jQuery is not defined
Trying to use jquery and jquery-ujs with Browserify but getting Uncaught ReferenceError: jQuery is not defined
我正在 rails 项目的 ruby 上工作,并且正在使用 Browserify 来管理 javascript 依赖项等。但是,当我 运行 我保留的应用程序获得 "Uncaught ReferenceError: jQuery is not defined" 因为 jquery-ujs 试图调用 jQuery 但它不可用。我知道 jQuery 正在页面上加载,因为当我在没有 import 'jquery-ujs'
的情况下包含下面的代码时,我能够通过调用 $ 和 jQuery 来成功使用 jQuery。但是,我似乎无法同时包含 'jquery-ujs'.
import 'jquery';
import $ from 'jquery';
global.jQuery = $;
import 'jquery-ujs'
这是我的 package.json 文件:
{
"name": "frontend",
"version": "1.0.0",
"private": true,
"scripts": {
"watchify": "watchify -vd -p browserify-hmr -e frontend/application.js -o app/assets/javascripts/application.js",
"build": "cross-env NODE_ENV=production browserify frontend/application.js | uglifyjs -c warnings=false -m > app/assets/javascripts/application.js"
},
"dependencies": {
"jquery": "^2.2.4",
"jquery-ujs": "^1.2.2",
"vue": "^1.0.0",
"vue-resource": "^0.7.0"
},
"devDependencies": {
"babel-core": "^6.0.0",
"babel-plugin-transform-runtime": "^6.0.0",
"babel-preset-es2015": "^6.0.0",
"babel-preset-stage-2": "^6.0.0",
"babel-runtime": "^6.0.0",
"babelify": "^7.2.0",
"browserify": "^12.0.1",
"browserify-hmr": "^0.3.1",
"browserify-shim": "^3.8.12",
"cross-env": "^1.0.6",
"uglify-js": "^2.5.0",
"vue-hot-reload-api": "^1.2.2",
"vueify": "^8.0.0",
"vueify-insert-css": "^1.0.0",
"watchify": "^3.4.0"
},
"browserify": {
"transform": [
"vueify",
"babelify",
"browserify-shim"
]
}
}
这是写在我的 application.js 文件中的,还有许多其他用 browserify 生成的东西:
var _jquery = require('jquery');
var _jquery2 = _interopRequireDefault(_jquery);
require('jquery-ujs');
我能够通过添加这些行来让它工作。我不确定为什么在这种情况下您必须使用 require 而不是 import...
import $ from 'jquery';
global.jQuery = $
require('jquery-ujs')
我正在 rails 项目的 ruby 上工作,并且正在使用 Browserify 来管理 javascript 依赖项等。但是,当我 运行 我保留的应用程序获得 "Uncaught ReferenceError: jQuery is not defined" 因为 jquery-ujs 试图调用 jQuery 但它不可用。我知道 jQuery 正在页面上加载,因为当我在没有 import 'jquery-ujs'
的情况下包含下面的代码时,我能够通过调用 $ 和 jQuery 来成功使用 jQuery。但是,我似乎无法同时包含 'jquery-ujs'.
import 'jquery';
import $ from 'jquery';
global.jQuery = $;
import 'jquery-ujs'
这是我的 package.json 文件:
{
"name": "frontend",
"version": "1.0.0",
"private": true,
"scripts": {
"watchify": "watchify -vd -p browserify-hmr -e frontend/application.js -o app/assets/javascripts/application.js",
"build": "cross-env NODE_ENV=production browserify frontend/application.js | uglifyjs -c warnings=false -m > app/assets/javascripts/application.js"
},
"dependencies": {
"jquery": "^2.2.4",
"jquery-ujs": "^1.2.2",
"vue": "^1.0.0",
"vue-resource": "^0.7.0"
},
"devDependencies": {
"babel-core": "^6.0.0",
"babel-plugin-transform-runtime": "^6.0.0",
"babel-preset-es2015": "^6.0.0",
"babel-preset-stage-2": "^6.0.0",
"babel-runtime": "^6.0.0",
"babelify": "^7.2.0",
"browserify": "^12.0.1",
"browserify-hmr": "^0.3.1",
"browserify-shim": "^3.8.12",
"cross-env": "^1.0.6",
"uglify-js": "^2.5.0",
"vue-hot-reload-api": "^1.2.2",
"vueify": "^8.0.0",
"vueify-insert-css": "^1.0.0",
"watchify": "^3.4.0"
},
"browserify": {
"transform": [
"vueify",
"babelify",
"browserify-shim"
]
}
}
这是写在我的 application.js 文件中的,还有许多其他用 browserify 生成的东西:
var _jquery = require('jquery');
var _jquery2 = _interopRequireDefault(_jquery);
require('jquery-ujs');
我能够通过添加这些行来让它工作。我不确定为什么在这种情况下您必须使用 require 而不是 import...
import $ from 'jquery';
global.jQuery = $
require('jquery-ujs')