topojson Uncaught TypeError: Cannot read property 'feature' of undefined

topojson Uncaught TypeError: Cannot read property 'feature' of undefined

背景

问题

relevant_page.js:705 Uncaught TypeError: Cannot read property 'feature' of undefined

代码

package.json:

...
"dependencies": {
   ...
   "topojson": "^1.6.26",

relevant_page.js:

import topojson from topojson;
...
function ready(data) {
  var topojsonStates = topojson.feature(us, us.objects.states).features;

疑难解答

我在浏览器中抛出错误的行设置了一个断点:

var topojsonStates = _topojson2.default.feature(us, us.objects.states).features;

并检查了这些以了解发生了什么:

us: Object
  ...
  type: "Topology"

us.objects.states: Object
  ...
  type: "Topology"

_topojson2.default: undefined

_topojson2.feature(us, us.objects.states).features: Array[53]

_topojson2.default 未定义(并且 _topojson2.feature 有效)这一事实让我停顿了一下,但我不确定那里发生了什么。有什么想法吗?

备注/更新

这与 how to consume an npm package with ES6 module via webpack 不同,因为如果您必须继续处理的主要问题是 Uncaught TypeError,则无法找到问题和答案。让我知道是否有任何我应该添加到问题或答案中以使其更有用和更易于搜索的内容。

遇到一个 GitHub issue where someone reported the same thing, which was fixed in a pull request 的答案,即将 topojson 作为命名空间导入:

import * as topojson from 'topojson';

这就是 topojson-client documentation 指示您导入它的方式。我没有意识到 1.6.x 也是一样的。切换到 ES6 后,这听起来一定是坏了。