javascript 在commonjs npm模块中使用d3

jbose2ul  于 2023-01-11  发布在  Java
关注(0)|答案(1)|浏览(130)

我正在创建一个私有的npm包来可视化一个Vuejs项目的结构。d3似乎是可视化的最佳选择之一,但是我在脚本中包含它时遇到了一些问题。在package.json中,我在bin属性"bin": { "visualize": "vis.js" },下定义了我的脚本,并导入了d3(正如我所看到的其他项目也是这样做的)

#!/usr/bin/env node

var path = require('path');
var fs = require('fs');
var d3 = require('d3');`.

但是我得到了以下错误

internal/modules/cjs/loader.js:1153
      throw new ERR_REQUIRE_ESM(filename, parentPath, packageJsonPath);
      ^

Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: <Project Path>\node_modules\d3\src\index.js
require() of ES modules is not supported.`

所以我把它改成了var d3 = import('d3');,它可以工作,但是var d3tree = d3.tree()语句引发了TypeError: d3.tree is not a function
在commonjs中使用d3是可能的吗?或者可能有另一个图形可视化库可以直接工作。

3qpi33ja

3qpi33ja1#

import('d3')dynamically加载d3,您应该等待它准备就绪。

import('d3').then(d3 => {
     // use d3 here
});

另一种选择是将项目从commonjs迁移到ESM。

相关问题