我想在铁轨与RequireJS应用程序一起使用c3.js
和d3.js
。我application.html.erb
如下所示:
application.html.erb
<!DOCTYPE html>
<html>
<head>
<title><%= yield(:title) %></title>
<%= stylesheet_link_tag "application", :media => "all" %>
<%= stylesheet_link_tag params[:controller] %>
<%= csrf_meta_tags %>
</head>
<body>
<div>
<%= yield %>
</div>
<%= requirejs_include_tag params[:controller] %>
</body>
</html>
电流控制器是instructor
和得到成功加载该文件,instructor.js
如下所示:
instructor.js
require(["jquery", "modules/d3.min", "modules/c3.min"], function($, d3, c3)
{
console.log(d3);
console.log(c3);
});
现在,运行应用程序时,有没有错误,但c3
是不确定的。这里是控制台输出:
安慰
Object {version: "3.4.13", ascending: function, descending: function, min: function, max:function…} // instructors.js:3
undefined // instructors.js:4
所以d3.js被载入罚款,但c3.js是不确定的。我不明白发生了什么事情错在这里。请帮忙。
谢谢!
当C3是初始化它正在寻求在全球范围内D3,如果它不能找到它,它试图解决它与D3的命名路径需要。如果你是在同一时间使用需要加载D3和C3这种依赖性可以创建一个比赛条件。
c3.js
function ChartInternal(api) {
var $$ = this;
$$.d3 = window.d3 ? window.d3 : typeof require !== 'undefined' ? require("d3") : undefined;
...
}
如果您设置您需要的配置设置为D3这应该解决该问题的明确路径。
码
requirejs.config({
paths: {
"d3": "modules/d3.min",
"c3": "modules/c3.min"
}
});
require(["d3", "c3"], function (d3, c3) {
console.log(d3);
console.log(c3);
});
安慰
Object {version: "3.5.6", behavior: Object, event: null, ns: Object, time: Object…}
Object {version: "0.4.10", chart: Object}
它发生在我身上,我的应用程序未提供静态文件。你可以在浏览器的开发者工具的网络选项卡中勾选ID:所有的JS和CSS文件返回404错误。
为了解决这个问题,我添加app.UseStaticFiles();
在Startup.cs文件的配置方法。
现在,脚本加载和c3被定义。
我希望这可以帮助别人。