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


77

我刚刚从d3js.org下载了D3.js(链接到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和e符号。Errrr ...对此我该怎么办?我正在使用python的SimpleHTTPServer提供文件。

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


对我来说,问题是simplehttpserver不支持UTF8每默认:stackoverflow.com/questions/15288891/...
lewurm

Answers:


136

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

<meta http-equiv="content-type" content="text/html; charset=UTF8">

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


5
<meta charset =“ UTF8”>对我有用,因为较长版本没有实现。谢谢
Nitsan Baleli 2014年

5
您能否评论为什么这样做是必要的?
BBischof

3
BBischof:D3包含非UTF8文档中的UTF-8符号(如π)无效
LaurentJégou2014年

1
如果用户在Chrome中将“视图”->“编码”设置为“自动检测”关闭,则无济于事。使用--ascii-only选项通过uglify运行它更可靠。
内森·布布纳2014年

1
你需要,因为D3你一些性格像π(PI)使用UTF8:github.com/mbostock/d3/issues/1195
尼古拉凡Lennepkade


6

添加“ charset =“ utf-8””

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

1
虽然很me脚,但是如果用户在Chrome中将“查看”->“编码”设置为“自动检测”设置为无用,则无济于事。使用--ascii-only选项通过uglify运行它更可靠。
内森·布布纳2014年

5

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

我确实通过首先使用--ascii-only选项通过uglify来运行而获得成功。

更新:原来我在Chrome中的“查看”->“编码”设置不是在“自动检测”中,而是在某些西方编码中。不知道为什么,但是改变它解决了问题。荒谬的是,该设置将在script标记上胜过charset属性。考虑到用户可能处于相同的情况并且无法弄清楚,我将继续使用uglify来确保成功。


有同样的问题。更改编码设置为自动检测修复了这个问题
安德鲁Staroscik

0

检查所有字符串串联之间是否有加号,否则,将生成此错误。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.