Javascript 找不到Chart.js-Moment.js!要使用时间刻度,必须在Chart.js之前包含它
我试图显示一个图表,显示过去30天的数据。该图表在与我的webpack开发服务器一起运行时工作。然而,当我构建它时,它失败了(npm运行构建)。它产生的错误是: (“找不到Chart.js-Moment.js!您必须先包含它 Chart.js使用时间刻度。下载地址为“) 我已经检查了在谷歌上找到的所有可能的解决方案,但似乎没有一个能解决这个问题。我已经按照要求包含了moment.js,但这会引发大量新错误,其中最主要的错误是moment.js中没有定义窗口。我还应该注意,当我在浏览器中检查元素时,此错误显示: 已阻止跨源请求:同一源策略不允许读取 位于的远程资源 . (原因:缺少CORS标头“访问控制允许原点”) 我不认为这是原因,因为我正在成功地向后端的其他API发出GET请求,而它们不会抛出此错误。更重要的是,启用了CORS。下面包含了相关的代码 谢谢Javascript 找不到Chart.js-Moment.js!要使用时间刻度,必须在Chart.js之前包含它,javascript,angularjs,node.js,chart.js,Javascript,Angularjs,Node.js,Chart.js,我试图显示一个图表,显示过去30天的数据。该图表在与我的webpack开发服务器一起运行时工作。然而,当我构建它时,它失败了(npm运行构建)。它产生的错误是: (“找不到Chart.js-Moment.js!您必须先包含它 Chart.js使用时间刻度。下载地址为“) 我已经检查了在谷歌上找到的所有可能的解决方案,但似乎没有一个能解决这个问题。我已经按照要求包含了moment.js,但这会引发大量新错误,其中最主要的错误是moment.js中没有定义窗口。我还应该注意,当我在浏览器中检查元素时
let ctx = document.getElementById("canvas");
this.chart = new Chart(ctx, {
type: 'line',
data: {
labels: all_dates,
datasets: [
{
data: cummulative_sums,
borderColor: '#3cba9f',
fill: false,
label: 'Failures in past 30 days'
},
{
data: comparison_cummulative_sums,
borderColor: '#ce5fc3',
fill: false,
label: 'Failures 30 days prior'
}
]
},
options: {
legend: {
display: true
},
scales: {
xAxes: [{
display: true
}],
yAxes: [{
display: true
}],
}
}
});
解决CORS问题的一种方法是将数据作为填充JSON请求到客户端。以下是一个npm包,用于执行此操作: 它将作为承诺返回您的数据,然后您只需对其调用.json(),无需填充即可返回json:
fetchJsonp('http://internal-address:5000/api/service_info/tt?severity=2')
.then(data => data.json())
.then(data => console.log(data))
听起来这可能是一张绷带,但它可能会让你暂时摆脱束缚。可能是你可以删除package-lock.json并重新安装一个npm,然后重新构建,看看问题是否仍然存在。也许可以尝试
添加而不是npm安装。您的问题让我想起了一个类似的问题,可能是通过IIRC解决的。Chart.js有以下两个版本:
独立构建
档案:
dist/Chart.js
dist/Chart.min.js
dist/Chart.bundle.js
dist/Chart.bundle.min.js
捆绑构建
档案:
dist/Chart.js
dist/Chart.min.js
dist/Chart.bundle.js
dist/Chart.bundle.min.js
独立版本不包含moment.js,您必须包含它,但捆绑版本包含moment.js
添加捆绑版本将包括并修复以下问题:
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.4.0/Chart.bundle.min.js"></script>
有小提琴吗?@stack-flo:我有一个类似的问题,我记得通过warn/npm显式添加了momentjs
,并将其保存到dev_依赖项中。添加后尝试构建。@NimeshkaSrimal不幸的是,这是一个内部网应用程序,包括此图表在内的许多代码都无法正常工作。因为您的问题是关于momentjs
找不到,您需要向我们展示您是如何添加脚本的,特别是momentjs
这里看起来也有两个问题:1。缺少或未添加momentjs依赖项2。CORS与您的api有关。请不要把两者混淆。可能首先尝试使用虚拟数据。并解决下一个问题注意:由于chart.js 2.8不再有“bundle”版本。使用最新的chart.js版本时,此解决方案不再有效