Кажется, что Browserify Shim не привязывает Tether к объекту окна.

В моем файле package.json есть следующее:

"browserify": {
  "transform": [
    "browserify-shim"
  ]
},
"browser": {
  "jquery": "./node_modules/jquery/dist/jquery.js",
  "tether": "./node_modules/tether/dist/tether.js"
},
"browserify-shim": {
  "jquery": "$",
  "tether": "Tether"
}

И тогда это в одном из моих модулей JS:

const $ = require('jquery');
const Tether = require('tether');

Затем я получаю следующую ошибку в браузере:

tether.min.js: 1 Uncaught TypeError: Невозможно установить свойство 'Tether' из неопределенного

Однако, если я не попытаюсь уложить Tether и просто использовать window.Tether в модуле, который требует этого, он работает нормально.

const $ = require('jquery');
window.Tether = require('tether');

Кто-нибудь знает, почему browserify-shim не подойдет для Tether таким образом?

1 ответ

Решение

Вы правы - вам нужно вручную указать window объект из вашего комплекта.

Я не уверен на 100%, но я понимаю, что эта часть документации, когда она говорит

x окно экспорта.$

на самом деле означает, что $ доступно для всех модулей в комплекте как $ - это не значит window объект вашего веб-приложения.

Смотрите, например, эту проблему.

Проблема в том разделе документации, где люди считают, что объект должен быть частью window - может быть хорошей идеей изменить формулировку этого.

Другие вопросы по тегам