【问题标题】:D3.js: "Uncaught SyntaxError: Unexpected token ILLEGAL"?D3.js:“未捕获的语法错误:意外的令牌非法”?
【发布时间】: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 版本,但我更愿意在本地提供文件。

【问题讨论】:

标签: javascript d3.js


【解决方案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】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-08
      • 1970-01-01
      • 2012-10-18
      • 1970-01-01
      • 1970-01-01
      • 2014-02-09
      • 2011-04-07
      • 1970-01-01
      相关资源
      最近更新 更多