有几种方法可以追踪这类问题。
也许首先应该有点背景。目前JS社区正处在转型期,他们正在寻找如何正确地进行CommonJS和ES6(ES模块)的互操作性。 babel
和webpack
最初都支持一种“兼容性”模式,但这不是很干净,将在webpack5发布后弃用。因此,任何查看.default
的东西都立即显得可疑,这确实是这个问题的原因。
首先,我们需要确定_uncontrollable
是什么。您可以通过查看源代码来完成这项工作。您可以在Chrome的开发者工具中检查“捕获异常时暂停”,这将使调试器在相关位置和源中启动。您将找到
var _uncontrollable = _interopRequireDefault(require("uncontrollable"));
所以它包括了uncontrollable
npm包。快速检查node_modules/react-bootstrap/package.json
文件,我们发现在其中它将“"uncontrollable": "^7.0.0"
”声明为一个依赖项。
用npm list
快速检查发现,另一个依赖项仍然需要旧版本的uncontrollable
。(输出已修剪以显示相关部分)。
├─┬ react-bootstrap@1.0.0-beta.12
│ ├─┬ react-overlays@1.2.0
│ │ ├─┬ uncontrollable@6.2.3
│ ├─┬ uncontrollable@7.0.1
鉴于这是一个不同的大版本,我认为它们可能不兼容。
这可能与webpack
一起工作,因为它将在构建中包含uncontrollable
的两个版本。但是shadow-cljs
不支持嵌套安装,因为我们不想有重复的包。