Кажется, что 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
- может быть хорошей идеей изменить формулировку этого.