Browserify shim 似乎没有将 Tether 附加到 window 对象
Browserify shim doesn't seem to attach Tether to window object
我的 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: Cannot set property 'Tether' of undefined
但是,如果我不尝试填充 Tether 并仅在需要它的模块中使用 window.Tether
,它就可以正常工作。
const $ = require('jquery');
window.Tether = require('tether');
有谁知道为什么 browserify-shim 不能以这种方式用于 Tether?
你是对的 - 你需要从你的包中手动指定 window
对象。
我不是 100% 确定,但我的理解是 this part of the documentation,当它说
x exports window.$
实际上意味着 $
可用于捆绑包 中的所有模块 作为 $
- 这并不意味着 window
对象你的网络应用程序。
例如见this issue.
问题出在文档的那一部分,人们似乎认为该对象应该是 window
的一部分 - 更改其措辞可能是个好主意。
我的 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: Cannot set property 'Tether' of undefined
但是,如果我不尝试填充 Tether 并仅在需要它的模块中使用 window.Tether
,它就可以正常工作。
const $ = require('jquery');
window.Tether = require('tether');
有谁知道为什么 browserify-shim 不能以这种方式用于 Tether?
你是对的 - 你需要从你的包中手动指定 window
对象。
我不是 100% 确定,但我的理解是 this part of the documentation,当它说
x exports window.$
实际上意味着 $
可用于捆绑包 中的所有模块 作为 $
- 这并不意味着 window
对象你的网络应用程序。
例如见this issue.
问题出在文档的那一部分,人们似乎认为该对象应该是 window
的一部分 - 更改其措辞可能是个好主意。