我的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未捕获的TypeError:无法设置未定义的属性“ Tether”


但是,如果我不尝试填充Tether并仅在需要它的模块中使用window.Tether,它会很好地工作。

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


有谁知道为什么browserify-shim无法以这种方式为Tether工作?

最佳答案

您是对的-您需要从捆绑包中手动指定window对象。

我不确定100%,但是我的理解是this part of the documentation,当它说


  x出口窗口。$


实际上意味着$作为$可用于捆绑软件中的所有模块-这并不意味着您的Web应用程序的window对象。

例如参见this issue

问题出在文档的该部分中,似乎人们认为该对象应该是window的一部分-更改其措辞可能是一个好主意。

关于javascript - Browserify填充程序似乎没有将Tether附加到窗口对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36793438/

10-11 08:23