How to install Chart.js in Laravel? ("Uncaught ReferenceError: Chart is not defined")

How to install Chart.js in Laravel? ("Uncaught ReferenceError: Chart is not defined")

我不知道,我花了多少时间寻找这个问题的解决方案。我想在我的 Laravel 项目中使用 Chart.js,所以我按照 here.

中描述的说明进行操作
  1. composer require fx3costa/laravelchartjs(已运行)
  2. Fx3costa\LaravelChartJs\Providers\ChartjsServiceProvider::class(添加到正确的地方)
  3. npm i chart.js(用于安装chart.js)
  4. 在我的控制器中 blade 我使用了示例 1 中的代码(折线图/雷达图)

之后出现错误:Uncaught ReferenceError: Chart is not defined。在那之前和之后,我尝试了不同的解决方案,但总是出问题,我认为这个应该适合我。我可能错过了一些明显但非常重要的东西。

你有什么想法吗? 使用 npm 安装后,我是否应该向 webpack.mix.jsbootstrap.js 文件中添加一些内容?

编辑:

如果我将 <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.8.0/Chart.js"></script> 放入 blade 的 head 部分,一切正常,但我使用 laravel-mix 来使用语言环境文件而不是link.

为什么你不复制

的内容
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.8.0/Chart.js"></script>

在您本地的文件中,例如:/public/js/chart.js 并将其加载到 head

<script src="{{asset('js/chart.js')}}"></script>

Chart.js 必须在 之前加载 内容才能在任何 Controller 中使用它。我正在加载我的 laravel-mix 变量 after HTML 内容(因为它包含一些像 jQuery 等大的库),所以这就是为什么它不能'没用。

解决方案:

在我的文档末尾,我还有我以前的脚本

<script src="{{ asset('js/app.js') }}" ></script>

但是现在我用一行代码在resources/js目录下新建了一个loadBefore.js文件:

require('chart.js/dist/chart.js');

如果有任何理由将任何其他 javascript 代码放在那里,将很容易放在那里。

我也像这样将此文件添加到 webpack.mix.js

mix.js('resources/js/loadBefore.js', 'public/js').sourceMaps();

当然,最后我将此脚本添加到 blade 的头部部分:

<script src="{{ asset('js/loadBefore.js') }}"></script>

现在一切正常,我正在使用我的 Laravel 文件 chart.js 文件中已经存在的内容。我不知道,有人知道更简单的解决方案,所以现在我接受我的回答,但我仍然愿意接受建议。