3

一段时间以来,我一直在 Angular 上成功使用 vis-timeline 6.5.2。

在我的 package.json 依赖项中,我有"vis-timeline": "^6.5.2"

在我的打字稿文件中,我有import { Timeline, DataSet } from 'vis-timeline';

一切正常。

现在,我正在尝试升级到 7.4.7 版本。我更改了 package.json 中的版本并运行了npm install.

首先,我的导入语句中断

Module '"../../../../node_modules/vis-timeline/declarations"' declares 'DataSet' locally, but it is not exported

我可以通过将导入更改为 来解决此问题import { Timeline, DataSet } from 'vis-timeline/standalone';,但我不知道这是否正确。

当我尝试运行项目时,ng s出现以下错误:

Error: ./node_modules/vis-timeline/peer/umd/vis-timeline-graph2d.min.js  
Module not found: Error: Can't resolve 'vis-data/peer/umd/vis-data.js' in 'C:\Users\Ken\workspace\hatch-tools\node_modules\vis-timeline\peer\umd' 

并且

Error: ./node_modules/vis-timeline/peer/umd/vis-timeline-graph2d.min.js
Module not found: Error: Can't resolve 'moment' in 'C:\Users\Ken\workspace\hatch-tools\node_modules\vis-timeline\peer\umd'

如果我将momentand添加vis-data到我的 package.json 中,我会得到更多模糊的错误。

关于如何让 vis-timeline 7 在 Angular 中工作的任何建议?

我在 Angular 11.2.8 和 Node 14.16.1 上。

4

2 回答 2

2

我最近才开始使用 vis-timeline 并尝试使用最新版本,然后安装所有必需的对等依赖项。一旦我得到它编译,我遇到了运行时问题,例如每当我单击可编辑事件时“无法读取未定义的属性”(注意:这在几天前的示例页面上发生过,但现在不是)

找了一圈,找到了这个帖子,把版本降级到6.5.2。然后我意识到 6.5.2 link存在安全风险。

回到它,我挖掘并找到了他们解决上述安全问题的版本(7.4.4)。这个版本没有我之前在运行时提到的相同问题。

我在 Angular 11.2.8 项目中成功使用了以下内容:

包.json

"vis-timeline": "7.4.4",
"@egjs/hammerjs": "2.0.17",
"keycharm": "0.4.0",
"moment": "2.29.1",
"propagating-hammerjs": "2.0.1",
"uuid": "7.0.3",
"vis-data": "7.1.2",
"vis-util": "4.3.4",
"xss": "1.0.8",

零件:

   import { DataSet } from 'vis-data/esnext';
   import { Timeline } from 'vis-timeline/esnext';

(您也可以从 'vis-timeline/standalone' 导入两者,但我们使用 webpack,因此 esnext 选项更适合我们的应用程序 - ref

于 2021-05-14T20:02:23.453 回答
0

我今天的任务也是启动一个新的时间线,我也看到了同样的问题。从头开始一个简单的 Angular 项目以隔离所有内容,并且必须在 vis-data、vis-util 和 moment 上运行“npm i”,这些都是通过安装时间线来实现的。即使在安装了这些之后,我也收到了 XSS 命名空间和hammerJs 的错误(执行了“npm ihammerjs”并且仍然收到错误)。我必须恢复到与您以前使用的版本相同的版本。需要先修复此构建,然后才能使用它。

于 2021-04-15T03:17:38.640 回答