【发布时间】:2019-10-31 13:34:01
【问题描述】:
我正在尝试使用 Laravel Mix 在我的 Laravel 5.8 项目中实现 Sparkline JavaScript package。 Sparkline 将不显示,并且出现以下浏览器控制台错误。
未捕获的 ReferenceError:未定义迷你图。
我没有正确调用它。
这是我的步骤:
使用 npm 安装 sparkline 包
npm install @fnando/sparkline --save-dev
并确认包存在于 node_modules (node_modules/@fnando/sparkline)
在我的 webpack.mix.js 中添加一个条目:
mix.js([
'resources/js/app.js',
'node_modules/@fnando/sparkline'
],'public/js');
在我的./resources/js/app.js 中包含一个导入:
import sparkline from "@fnando/sparkline"
使用 npm run dev 运行 webpack,生成资产:./public/js/app.js.
它们在我的主布局刀片中被引用,如下所示:
[.. snip ..]
<script src="{{ asset('js/resources.js') }}"></script>
<script src="{{ asset('js/semantic.js') }}"></script>
<script src="{{ asset('js/app.js') }}"></script>
<script>
$('.ui.dropdown').dropdown();
$('.ui.sticky').sticky({
offset: 50,
context: '#content'
});
@stack('inline_scripts')
</script>
</body>
</html>
最后,我尝试像这样在刀片中渲染迷你图:
@extends('layouts.master')
@section('content')
<div class="ui secondary segment">
<h4>Sparklines!</h4>
<div class="ui two column centered grid">
<div class="column">
<svg class="sparkline" width="100" height="30" stroke-width="3"></svg>
</div>
</div>
</div>
@push('inline_scripts')
sparkline.sparkline(document.querySelector(".sparkline"), [1, 5, 2, 4, 8, 3, 7]);
@endpush
@endsection
【问题讨论】:
-
import不会全局导入,只会在您导入的文件中导入。尝试使用window.sparkline = sparkline使其全球化。您不需要将其实际添加到 .mix 文件中
标签: javascript laravel npm webpack laravel-mix