【问题标题】:How to use Sigma.js in React with Typescript如何在 React 中使用 Sigma.js 和 Typescript
【发布时间】:2023-03-13 06:27:01
【问题描述】:

我正在尝试使用 React/TypeScript 设置一个简单的 Web 应用程序,以便我可以使用 Sigma.js 处理一些图表。但我无法得到最终结果来用 Sigma 渲染任何东西。

这是我遵循的步骤:

$ npx create-react-app sigmafiddle --template typescript^C
$ cd sigmafiddle
$ yarn add sigma
$ yarn add @types/sigmajs

但是,我在导入 Sigma 时遇到以下问题:

import { sigma } from 'sigma' 

失败并显示此错误消息:

~/devel/sigmafiddle/src/App.tsx(4,23) 中的 TypeScript 错误: 找不到模块“sigma”的声明文件。 '~/devel/sigmafiddle/node_modules/sigma/endpoint.js' 隐含了一个 'any' 类型。 尝试npm install @types/sigma(如果存在)或添加包含declare module 'sigma'; TS7016 的新声明(.d.ts)文件 不是一个真正有用的消息,因为 npm 中不存在 @types/sigma。

如果我试试这个:

import { sigma } from 'sigmajs' 

我遇到了这个失败:

~/devel/sigmafiddle/src/App.tsx(4,23) 中的 TypeScript 错误: 文件 '~/devel/sigmafiddle/node_modules/@types/sigmajs/index.d.ts' 不是模块。 TS2306

我也试过包react-sigma:

yarn add react-sigma

// in app.tsx
import {Sigma, RandomizeNodePositions, RelativeSize} from 'react-sigma';

很遗憾没有@types/react-sigma包,所以这会导致如下错误:

找不到模块“react-sigma”

如何让 sigma.js 与 TypeScript 和 React 一起使用?

【问题讨论】:

    标签: reactjs typescript npm import sigma.js


    【解决方案1】:

    您没有导入您要使用的内容

    替换

    /// <reference types="@types/sigmajs" />
    

    import { sigma } from 'sigma';
    

    通常,如上导入是 js/ts 项目中使用 lib 的常用方式。


    更新

    由于错误似乎缺少库的类型定义,

    文件 '~/devel/graph-grammar/node_modules/@types/sigmajs/index.d.ts' 不是模块。

    npm install --save @types/sigmajs
    

    并且可以正常导入。

    import { sigma } from 'sigma';
    

    参考@types/sigmajs


    2号更新

    你可能需要 react-sigma npm, repo 在你的 react 项目中。

    安装它,导入参考文档就好了。

    import {Sigma, RandomizeNodePositions, RelativeSize} from 'react-sigma';
    

    如果不行,试试sigmareact-sigma,因为ploty.js需要同时安装ploty.jsreact-ploty.js,我猜你可能会遇到类似的情况。


    更新3号

    似乎 react-sigma 不支持typescript,而是支持flow-type

    参考:react-sigma的文档

    【讨论】:

    • 正如我在 OP 中所说,import 语句不起作用。 File '~/devel/graph-grammar/node_modules/@types/sigmajs/index.d.ts' is not a module. 的编译器错误我将尝试 react-sigma。我没有看到它的打字稿绑定,所以我可能只需要下拉到常规的旧 javascript。
    • 好的,我已经重写了这个问题。此外,导入 @types/sigmajs 仍然无法使用 import 语句。
    • 我不确定我是否理解您的最后一个解决方案。我可以一起安装 sigma 和 react-sigma,但我没有从这两个包中获得 TypeScript 的类型绑定。我已经验证 react-sigma 在纯 JS 应用程序中独立工作,问题是我遇到的问题似乎真的是 TypeScript 特有的,并且没有正确的类型绑定。也许它们只是 sigmajs 不存在。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-06
    • 1970-01-01
    • 2020-09-29
    • 2019-06-27
    • 2020-05-09
    • 2016-11-11
    • 1970-01-01
    相关资源
    最近更新 更多