2016-04-20 67 views
2

所以我偶然发现了一个制作图表和图形的工具AmCharts,但事实是,我不知道如何使它们与webpack一起工作。AmCharts未加载图片/ SVG

我遇到的问题是AmCharts无法在node_module内找到自己的SVG图像。

例子:

enter image description here

图init和设置:

enter image description here

应该说,我使用Vue.JS用的WebPack。 我在main.js脚本中导入了amcharts.js和serial.js,所以我可以在整个网站上使用这些图表,但是我忘了导入其他的东西,或者它可能是与我混淆的webpack? 我能够从资产中加载单独的SVG文件,但我似乎无法让AmCharts在其库中加载自己的SVG文件,这应该会自动完成,他们正在尝试,但我加载时出现404错误图表。

谈到Webpack支持和AmChart支持,但他们只是将这个问题推给了其他人。所以最后在这里发布这个问题。

还应该提到,我试图使用AmCharts中的选项映射图像,以便它能找到这些文件,我甚至尝试将所有图像从node_modules amcharts文件夹中复制到我的资产中,并指向新文件夹,但没有运气。

尽管有任何帮助,但谢谢!

问候 托比亚斯

+0

阅读[文档](https://docs.amcharts.com/3/javascriptcharts/AmChart)页面,在'path' /'pathToImages'属性中 – vsync

+0

这与vue或webpack无关。我将编辑标题。 – vsync

回答

3

默认情况下amCharts试图寻找他们的图像在同一目录amcharts.js。如果您正在导入那些包含除<script>标记以外的其他方法,则可能会失败。

要解决该问题,您需要将path属性设置为指向手动安装amCharts的位置。即:

AmCharts.makeChart("chartdiv", { 
    "type": "serial", 
    "path": "/libs/amcharts/", 
    // ... 
}); 

或者,你可以设置一个全局变量AmCharts_path指向哪里amCharts'文件所在的路径。 I.e .:

var AmCharts_path = "/libs/amcharts/"; 

P.S.你不需要指定/ images /目录的完整路径。它会认为它在主要的amCharts目录下。

+0

试过这个,没有任何运气,我认为webpack可能会压缩我导入到单个js文件的文件,并使amCharts很难找到它们。 我尝试复制所有图像,然后直接使用“pathToImages”到我的资产,但没有运气。 – TobiasIsak

+0

你可以检查你的浏览器的控制台,看看究竟是什么图表试图(和失败)加载?然后确保那些文件在那个路径中。 – martynasma

0

在使用rails和JS Amcharts时发生了类似的问题。

amcharts查找的图像作为内amcharts.js设置由路径 this.pathToImages变量。

1-将其值更新为this.pathToImages="http://cdn.amcharts.com/lib/3/images/"并且不再需要本地图像。

发现这个位置:https://docs.amcharts.com/3/javascriptcharts/ChartScrollbar#example

2-另一个变通可通过jQuery的被更新的图像路径。例如对于滚动条图像,你可以做 $("#chart_div > div > div > svg > g:nth-child(12) > g:nth-child(2) > g:nth-child(7) > image").attr('xlink:href', '/path/to/image')

希望有所帮助。