2

我的 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 未捕获类型错误:无法设置未定义的属性“系绳”

但是,如果我不尝试填充 Tether 而只是window.Tether在需要它的模块中使用它,它就可以正常工作。

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

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

4

1 回答 1

2

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

我不是 100% 确定,但我的理解是文档的这一部分,当它说

x 出口窗口。$

实际上意味着捆绑包中的$所有模块都可以使用它- 这并不意味着您的 webapp 的对象。$window

参见例如这个问题

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

于 2016-04-22T12:42:35.723 回答