Как загрузить jQuery mobile в проект browserify?

Я пытаюсь загрузить jquery-mobile в свой проект browserify и получаю сообщение об ошибке, потому что this относится к пустому объекту вместо window объект. Browserify упаковывает jquery-mobile в обычную оболочку (function(require, module, exports){ ... }) но this не входит в сферу window,

package.json

{
  "dependencies": {
    "animate.css": "^3.1.1",
    "backbone": "^1.1.2",
    "backbone-query-parameters": "git://github.com/jhudson8/backbone-query-parameters",
    "backbone.marionette": "^2.3.1",
    "backbone.radio": "^0.6.0",
    "backbone.storage": "^0.1.0",
    "backbone.syphon": "^0.5.0",
    "bootstrap": "^3.3.1",
    "browserify-swap": "^0.2.1",
    "handlebars": "^1.3.0",
    "jquery": "^2.1.3",
    "jquery-mobile": "^1.4.1",
    "lodash": "^2.4.1",
    "nprogress": "^0.1.6"
  },
  "browser": {
    "bootstrap": "./node_modules/bootstrap/dist/js/bootstrap.js",
    "jquery-mobile": "./node_modules/jquery-mobile/dist/jquery.mobile.js"
  },
  "browserify-shim": {
    "bootstrap": {
      "depends": [
        "jquery:jQuery"
      ]
    },
    "jquery": "$",
    "jquery-mobile" : { "exports": "$.mobile", "depends": [ "jquery:$" ] }
  },
  "browserify-swap": {
    "@packages": [
      "underscore"
    ],
    "dist": {
      "underscore.js$": "lodash"
    }
  },
  "browserify": {
    "transform": [
      "babelify",
      [
        "hbsfy",
        {
          "extensions": [
            "hbs"
          ]
        }
      ],
      "browserify-swap",
      "browserify-shim"
    ]
  }
}

Сообщение об ошибке

jquery.mobile.js: 14931 Uncaught TypeError: Невозможно прочитать свойство 'jQuery' из неопределенного

Затем я нашел модуль

Я нашел moduleify после небольшого поиска и попытался использовать это в моем package.json для jquery-mobile, но получаю ошибку. Это моя обновленная конфигурация преобразования с помощью moduleify:

  "browserify": {
    "transform": [
      "babelify",
      [
        "hbsfy",
        {
          "extensions": [
            "hbs"
          ]
        }
      ],
      [
        "moduleify",
        [
          "jquery.mobile"
        ]
      ],
      "browserify-swap",
      "browserify-shim"
    ]
  }

Это дает мне ошибку с moduleify:

moduleify / index.js: 9 var rules = Array.isArray (псевдонимы)? псевдонимы: Object.keys(псевдонимы).map(fu

У кого-нибудь есть какие-либо предложения о том, как сделать this ссылка window? Я чувствую, что я на правильном пути, но не уверен, что делать дальше. Спасибо!

1 ответ

При первом подходе вы делаете:

"jquery-mobile" : { "exports": "$.mobile", "depends": [ "jquery:$" ] }

Я думаю, что вам нужно сделать:

"jquery-mobile" : { "exports": "$.mobile", "depends": [ "jquery:jQuery" ] }
Другие вопросы по тегам