angular - Angular Chartjs 错误 TS2304:找不到名称 OffscreenCanvasRenderingContext2D
问题描述
我正在使用带有 Angular 和 Ionic 的 chartjs:
安装:
- npm install chart.js --save
HTML
<!-- Graph -->
<div class="chart">
<canvas #myChart></canvas>
</div>
TS
import { Chart, registerables } from 'chart.js';
Chart.register(...registerables);
const ctx = this.myChart.nativeElement;
this.chartHolder = new Chart(ctx, {
type: 'doughnut',
data,
options
});
终端错误
ERROR in ../ node_modules / chart.js / types / index.esm.d.ts: 522: 5 - error TS2304: Cannot find name 'OffscreenCanvasRenderingContext2D'.
522 | OffscreenCanvasRenderingContext2D
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./ node_modules / chart.js / types / index.esm.d.ts: 524: 5 - error TS2304: Cannot find name 'OffscreenCanvas'.
524 | OffscreenCanvas
~~~~~~~~~~~~~~~
./ node_modules / chart.js / types / index.esm.d.ts: 525: 35 - error TS2304: Cannot find name 'OffscreenCanvas'.
525 | { canvas: HTMLCanvasElement | OffscreenCanvas }
~~~~~~~~~~~~~~~
./ node_modules / chart.js / types / index.esm.d.ts: 526: 62 - error TS2304: Cannot find name 'OffscreenCanvas'.
526 | ArrayLike<CanvasRenderingContext2D | HTMLCanvasElement | OffscreenCanvas>;
~~~~~~~~~~~~~~~
./ node_modules / chart.js / types / index.esm.d.ts: 3351: 66 - error TS2315: Type 'DeepPartial' is not generic.
3351 export type ScaleOptions<TScale extends ScaleType = ScaleType> = DeepPartial<ScaleOptionsByType<TScale>>;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./ node_modules / chart.js / types / index.esm.d.ts: 3365: 65 - error TS2315: Type 'DeepPartial' is not generic.
3365 export type ChartOptions<TType extends ChartType = ChartType> = DeepPartial<
~~~~~~~~~~~~
3366 CoreChartOptions<TType> &
~~~~~~~~~~~~~~~~~~~~~~~~~~~
...
3371 ChartTypeRegistry[TType]['chartOptions']
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3372 >;
解决方案
我希望我仍然可以帮助您和其他人解决这个问题。
OffscreenCanvas
创建错误是因为它是此处所述的实验技术。
因此,很可能会产生错误、错误、故障等。根据我自己的经验,我的建议在 node_modules/chart.js/types/index.esm.d.ts(500) 中:
export declare type ChartItem =
| string
| CanvasRenderingContext2D
// | OffscreenCanvasRenderingContext2D
| HTMLCanvasElement
// | OffscreenCanvas
| { canvas: HTMLCanvasElement}// | OffscreenCanvas }
| ArrayLike<CanvasRenderingContext2D | HTMLCanvasElement>;// | OffscreenCanvas>;
在DeepPartial
我的情况下,我在node_modules / chart.js / types / utils.d.ts
(13 和 14)中所做的事情:
13 type _DeepPartialArray<T> = Array<Partial<T>>
14 type _DeepPartialObject<T> = { [P in keyof T]?: Partial<T[P]> };
我所做的是改变
Array<DeepPartial<T>>
至
Array<Partial<T>>
和
{[P in keyof T] ?: DeepPartial<T[P]>}
至
{[P in keyof T] ?: Partial<T[P]>}
由于正在创建循环引用DeepPartial
并且通常会产生错误,因此我对此的引用是另一种语言的,但无论如何我都会与您分享
https://www.youtube.com/watch?v=aMfvQLLqbzE&ab_channel=makigas%3Atutorialesdeprogramaci%C3%B3n
我正在使用 chart.js 使用 MEAN Stack 创建一些图表,它给我带来的问题比编译中的任何问题都多,因为图表和应用程序仍然有效。
这是一个真正的解决方案出来的时候,因为我已经研究了将近一个星期,你的问题是我在整个互联网上找到的最准确的问题,它有完全相同的错误,但仍然没有答案,我想是因为它是什么最近,尚未影响大众,这些错误的真正解决方案或纠正尚未出现。
问候!
推荐阅读
- python - 从时间模块获取输出作为列表
- html - 遍历数组时面临实现轮播的困难
- c++ - 是否可以使用 std::array 作为 hash_table 值,但大小不同
- javascript - Angular 9 FormModule 单元测试
- amazon-web-services - Gitlab CI 定价共享运行器与自托管 aws 运行器
- bash - 执行 tail -f 直到找到 BACKWARDS 模式
- javascript - 主题php联系表
- python - AttributeError: __enter__ 尝试从 MySQL 查询时出错
- ssl - 端口 443 中的 tomcat ssl 配置
- javascript - 结合 CSS 和 SVG 过滤器来编辑和保存图像