topojson Uncaught TypeError: Cannot read property 'feature' of undefined
topojson Uncaught TypeError: Cannot read property 'feature' of undefined
背景
- 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 不同,因为如果您必须继续处理的主要问题是 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 后,这听起来一定是坏了。
背景
- 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 不同,因为如果您必须继续处理的主要问题是 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 后,这听起来一定是坏了。