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')