【问题标题】:How to include d3.js in angularjs app?如何在 angularjs 应用程序中包含 d3.js?
【发布时间】:2015-01-28 11:40:31
【问题描述】:

我正在编写一个 Angularjs 应用程序。我正在使用带有 Grunt 的 MEAN 堆栈。我编写了一个使用 d3 库的指令。我在以下位置有 d3.js 文件:

/client/app/lib/d3.js

该文件自动包含在 index.html 中,并且在开发模式下运行良好。但是当我在生产模式下运行它时,会出现以下错误:

Uncaught ReferenceError: d3 is not defined

然后我做了一些研发,发现如果任何 java 脚本文件包含在以下语法中,它会给出相同的错误:

!function foo() {
   var myd3 = {};
...
...
...
   this.myd3 = myd3;
}();

以上代码会报错:Uncaught ReferenceError: myd3 is not defined

【问题讨论】:

标签: javascript angularjs d3.js


【解决方案1】:

如果您没有从函数显式返回任何内容,则返回 undefined。现在! 变成了true。就是这样。

我认为问题在于脚本的执行。您确定 d3 在项目中的任何位置使用之前先加载吗?确保 <script src='d3.js'></script> 出现在您的代码脚本之前。

一般来说,对于生产级代码,concatenation 的脚本已经完成。确保按顺序连接(d3,your-app-scripts)。

【讨论】:

  • 感谢您的回复。是的 存在于 index.html 中。不只是 d3.js 我写了一个小的 a.js 文件如下: !function(){ var a; this.a = a}();它也会引发同样的错误。如何确认串联是否按顺序完成?对不起,愚蠢的问题。我是 Angular.js 应用程序的新手。
  • 您是如何开始构建 Angular 应用程序的?您使用的是 yeoman 还是您自己的一些构建配置?给出构建配置..
  • 是的,我正在使用 yeoman 和 fullstack-generator 来生成代码。我还没有写任何构建配置。
  • 请完成 concat 任务。它是如何运行的。浏览插件文档。会有很大帮助的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-17
  • 2017-02-23
相关资源
最近更新 更多