【问题标题】:Aurelia CLI can't import chart.js TypeScriptAurelia CLI 无法导入 chart.js TypeScript
【发布时间】:2016-12-05 21:33:42
【问题描述】:

我正在使用带有 aurelia/aurelia-cli 的打字稿。我已经安装了 npm chart.js 并将其添加到我的 aurelia.json 文件中:

"dependencies": [
      ...
      {
        "name": "chartjs",
        "path": "../node_modules/chart.js/dist",
        "main": "Chart"
      },
]

我也跑过打字:

typings install dt~chart.js --global --save

现在我正在尝试将它导入我的一个组件中

import * as Chart from 'chartjs'

但我得到了错误:

Cannot find module 'chartjs'.

我也试过了:

... from 'chart'
... from 'Chart'
... from 'Chart.js'
... from 'chartjs'
import * as chart ...
import * as chartjs ...

【问题讨论】:

    标签: typescript aurelia


    【解决方案1】:

    您是否尝试过声明一个空模块?例如在 index.d.ts 这样的声明文件中,添加:

    declare module "chart.js";
    

    我发现这是导入 3rd 方库的一个很好的起点。更多信息可以在这里找到:https://www.typescriptlang.org/docs/handbook/modules.html#working-with-other-javascript-libraries

    如果没有错误并且可以使用纯js chart.js 函数,则表示已包含库但未包含类型。

    另外,如果您使用的是 Typescript 2.0,我认为您应该安装这样的类型:

    npm install --save @types/chartjs
    

    【讨论】:

    • 如果我删除 index.d.ts 文件的所有内容并添加 declare module "chart.js";,那么错误就会消失。什么意思是库已经包含而类型没有?
    • 因此,如果您声明这样的模块,则该模块的所有导入都将具有 any 类型。你不再有任何类型检查,但只要你正确加载了模块,你应该能够使用 js.如果该模块尚未加载并且您尝试使用它,您将收到一堆运行时错误。 js 库并不总是有类型定义,所以这样你就可以使用没有任何 typedef 的普通 js 库。
    • 当我这样声明模块时,Visual Studio 错误消失了,但是当应用程序尝试编译时,它会抛出找不到“chart.js”的错误,并且程序会崩溃跨度>
    【解决方案2】:

    我能够通过更改我的 import 和 aurelia.json 文件使其工作。

    aurelia.json

    {
        "name": "chartjs",
        "path": "../node_modules/chart.js/dist/Chart.min"
    },
    

    进口声明

    import 'chartjs';
    

    【讨论】:

      【解决方案3】:

      我知道 Chart.js 可以与 Aurelia 一起使用,因为我们在我们的一个演示应用程序中使用它来进行研讨会。在演示应用程序中,它是这样导入的:import Chart from 'chartjs'; 但那是 ES2015,而不是 TypeScript。

      另外,aurelia.json 中的配置应如下所示:

            {
              "name": "chartjs",
              "path": "../node_modules/chart.js/Chart.min",
              "exports": "Chart"
            }
      

      【讨论】:

      • 你们使用的是 chartjs v1 还是 v2?
      • 看来我有 2.4.0
      • 那么为什么需要exports 属性呢?我认为这是针对使用全局脚本的遗留库
      • 它可能不再是了。我发布的配置最后一次更新是在 8 月。
      猜你喜欢
      • 2016-06-11
      • 1970-01-01
      • 2018-01-29
      • 1970-01-01
      • 1970-01-01
      • 2017-01-20
      • 2019-02-23
      • 1970-01-01
      • 2017-07-09
      相关资源
      最近更新 更多