javascript - ES6 导出脚本
问题描述
我在 React 中使用 D3 v5,并且有一个使用 v3 的可视化。我正在为 v5 使用 npm 模块,但对于 v3,我正在尝试导入 D3 以用于该可视化。
在我的组件中,我有:
import * as d3 from './lib/d3/v3/d3';
在 d3 文件夹的 d3.js 中,缩小的 v3 d3 脚本:
const d3 = !function(){function n(n){return n&&(n.ownerDocument||n....
export default d3;
但我收到以下错误:
编译失败。
./src/components/d3/NetworkTopology/D3_NetworkTopology.js
Attempted import error: 'behavior' is not exported from './lib/d3/v3/d3' (imported as 'd3').
NetworkTopology.js:
...
const zoom = d3.behavior
.zoom()
“行为”在 v4 中被删除,所以对我来说,这看起来像是在拉 D3 V5 版本而不是 V3。如何设置它以使用 D3 的两个版本?
我将导入更改为:
import d3 from './lib/d3/v3/d3';
但得到了这些编译错误:编译失败。
./src/components/d3/NetworkTopology/lib/d3/v3/d3.js
Line 1: Expected an assignment or function call and instead saw an expression no-unused-expressions
并且我得到了与原始文件相同的错误,import * as d3 from './lib/d3/v3/d3';
并在 d3.js 中删除了 const 和导出(只需使用原始的缩小文件)。
解决方案
我认为这与 d3 的版本无关。您的问题是您的带有缩小库的脚本有一个export default d3
(名称default
绑定到值为 的常量的导出d3
),而您的组件执行命名空间import * as d3
,这意味着这d3
将是一个包含所有导出的模块对象 - 在您的情况下,只有default
一个。所以d3.default.behaviour
可以工作。但是您应该将导入更改为不使用命名空间对象,而是直接导入单个值:
import d3 from './lib/d3/v3/d3';
// which is short for
import { default as d3 } from './lib/d3/v3/d3';
推荐阅读
- flutter - 使用 agora.io 向远程用户发送用户信息元数据?
- node.js - Docker 映像运行中的 JavaScript 堆内存不足
- spring - DropDownlist 如何使用 Spring boot Mysql 加载数据
- sql-server - SQL-Server:关键字“with”附近的语法不正确。如果此语句是公用表表达式,则为 xmlnamespaces 子句
- xamarin.forms - 允许弹出窗口在 Xamarin Forms WebView 中工作
- python-3.x - 不知道为什么我在 django 中得到一个(CSRF 令牌丢失或不正确。)错误
- node.js - webpack 不生成 bundle.js?
- javascript - 映射具有任意数量节点的嵌套数组的最简单方法
- reactjs - 如何在不使用 React 中的父子关系的情况下将数据发送到另一个组件
- sql - Spark sql查询以查找按最大重叠度排序的同一表的两列之间的多对多映射