D3.js:“未捕获的语法错误:意外的令牌非法”?

Posted

技术标签:

【中文标题】D3.js:“未捕获的语法错误:意外的令牌非法”?【英文标题】:D3.js: "Uncaught SyntaxError: Unexpected token ILLEGAL"? 【发布时间】:2013-02-20 15:18:00 【问题描述】:

我刚刚将downloaded D3.js from d3js.org(zip 文件的链接)解压缩,并在以下 html 页面中引用它:

<html>
<head>
<title>D3 Sandbox</title>
<style>
</head>
<body>
<script src="/d3.v3.js"></script>
</body>
</html>

但是当我加载这个页面时,我的控制台(在 Chrome 中)给了我这个错误:

Uncaught SyntaxError: Unexpected token ILLEGAL: line 2

它不喜欢pi and e symbols at the start of the file。 Errrr ...我该怎么办?我正在使用 python 的 SimpleHTTPServer 提供文件。

更新:是的,我知道我可以链接到 CDN 版本,但我更愿意在本地提供文件。

【问题讨论】:

我的问题是 simplehttpserver 默认不支持 utf8:***.com/questions/15288891/… 【参考方案1】:

这听起来像是编码的问题。我推荐The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)。尽管标题有些居高临下,但它包含一些非常有用的信息。具体来说,听起来您的服务器正在使用错误的编码提供 d3.v3.js 文件。

【讨论】:

【参考方案2】:

尝试在 HTML 宿主文档中指定 UTF-8 字符集:

&lt;meta http-equiv="content-type" content="text/html; charset=UTF8"&gt;

D3 在非 UTF8 文档中包含无效的 UTF-8 符号(如 π)。

【讨论】:

对我有用,由于某种原因,较长的版本没有。谢谢 你能评论一下为什么这是必要的吗? BBischof : D3 在非 UTF8 文档中包含无效的 UTF-8 符号(如 π) 如果用户在 Chrome 中将其 View->Encoding 设置为 Auto-Detect,这将无济于事。使用 --ascii-only 选项通过 uglify 运行它更可靠。 你需要使用 UTF8,因为 D3 你有一些像 π (Pi) 这样的字符:github.com/mbostock/d3/issues/1195【参考方案3】:

添加'charset="utf-8"'

<script src="/d3.v3.js" charset="utf-8"></script>

【讨论】:

虽然很蹩脚,但如果用户在 Chrome 中将 View->Encoding 设置为 Auto-Detect ,这将无济于事。使用 --ascii-only 选项通过 uglify 运行它更可靠。【参考方案4】:

我尝试在文档和脚本标签本身中设置字符集,但 Chrome 似乎并不在意。不知道我是不是做错了什么。

我确实通过首先使用 --ascii-only 选项通过 uglify 运行它找到了成功。

更新:原来我在 Chrome 中的 View->Encoding 设置不是自动检测,而是一些西方编码。不知道为什么,但改变它解决了问题。荒谬的是,该设置会胜过脚本标签上的字符集属性。考虑到用户可能处于相同的情况并且无法弄清楚,我仍然会使用 uglify 来确保成功。

【讨论】:

遇到了同样的问题。将编码设置更改为自动检测解决了问题【参考方案5】:

检查所有字符串连接之间是否有加号,如果没有,则会生成此错误。

【讨论】:

以上是关于D3.js:“未捕获的语法错误:意外的令牌非法”?的主要内容,如果未能解决你的问题,请参考以下文章

D3.js:d3-delaunay - 如何开始?

D3.js 与 React.js

D3.js 和 Cytoscape.js 有啥区别? [关闭]

d3.js初识

D3.js的v5版本入门教程(第十二章)—— D3.js中各种精美的图形

d3.js学习笔记