我今天在第三方包 ( natural
) 中遇到了一些非常奇怪的错误,其中包含TypeError: Cannot read property 'without' of undefined
之类的错误。 原来是因为它像这样导入underscore
:
var Tokenizer = require('./tokenizer'),
util = require("util"),
_ = require('underscore')._;
似乎最新版本将整个 shebang 导出为默认导出,而不是导出的命名值。 这可能很好……除了执行上述操作的任何软件包。
也许_
仍应作为默认导出的别名公开? 更改像顶级 API 这样重大的东西似乎是一个重大的重大更改(不是 _minor_ semver 更改!),毕竟underscore
被许多软件包用作依赖项。
同样的问题在这里.. 似乎_
被导出为undefined
: https ://github.com/jashkenas/underscore/issues/2835
Pinging @jgonggrijp — 看起来我们需要 1.10.2 补丁跟进。
具体来说,我认为是删除了以前的 Node API 的旧 shim 代码导致了问题,这里: https ://github.com/jashkenas/underscore/compare/1.9.2...1.10.0#
... @jgonggrijp — 你认为添加类似的东西会有问题吗?
这绝对是一个疏忽,对此感到抱歉。
@jashkenas您的链接似乎不起作用,所以我看不出您的意思。 也许像这样的东西在index-default
?
var _ = mixin(allExports);
_._ = _;
export default _;
var _ = mixin(allExports); _._ = _; export default _;
这正是我正在做的! 极好的。
现在应该在 1.10.2 中修复这个问题,我已经将其推送到 NPM。 请试一试,如果一切恢复正常,请告诉我。 为搞砸而道歉。
@jashkenas 你的上帝! :angel: 谢谢!