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 字符集:
<meta http-equiv="content-type" content="text/html; charset=UTF8">
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 和 Cytoscape.js 有啥区别? [关闭]