【问题标题】:topojson Uncaught TypeError: Cannot read property 'feature' of undefinedtopojson Uncaught TypeError:无法读取未定义的属性“功能”
【发布时间】:2017-05-08 13:13:52
【问题描述】:

背景

  • JavaScript 在调用 topojson.feature(topology, object) 时失败。那是 topojson-client 的文档,看起来是在 topojson 到 2.x 时添加的,但在我使用的版本 1.6.26 中是相同的想法。
  • 使用 webpack 构建 JS 用于生产,使用 webpack-dev-server 构建本地开发。
  • 直到最近才正常工作。

问题

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 不同,因为如果您必须继续处理的主要事情是未捕获的类型错误,则无法回答该问题和答案。让我知道我是否应该在问题或答案中添加任何内容以使其更有用和更易于搜索。

【问题讨论】:

    标签: javascript npm webpack ecmascript-6 topojson


    【解决方案1】:

    遇到了GitHub issue,有人报告了同样的事情,在pull request 中修复了答案,即导入topojson 作为命名空间:

    import * as topojson from 'topojson';
    

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

    【讨论】:

      猜你喜欢
      • 2021-04-28
      • 2017-07-20
      • 1970-01-01
      • 2020-03-28
      • 2023-04-11
      • 2016-04-22
      • 2015-06-08
      • 2014-03-17
      • 1970-01-01
      相关资源
      最近更新 更多