Flask JavaScript文件中出现的额外字符

时间:2015-05-05 01:08:46

标签: javascript python flask docker

在我的发展过程中发生了一些非常随机的事情,我不能为我的生活弄清楚出了什么问题或原因。

我在Flask中构建应用程序以及使用Docker。到目前为止,一切都运行良好。

如果我有一个JavaScript文件,如果我修改Flask,则在文件末尾加载一些随机字符。或者更具体地说,

如果我有

的文件
alert('random text');

我加载页面,JS会做你期望的事情。但是如果我在文件中添加任何额外的字符,

alert('randomer text');

我在文件末尾有两个随机字符。两者看起来像

如果我要删除原始文件中的字符,请说

alert('random');

我会得到一个最后丢失5个字符的文件,所以它看起来像

alert('random te

你可以看到非常离奇。

当在本地运行Flask时,一切正常,只有当我将所有内容加载到Docker中时才开始发生这种情况,因此我必须假设它与Docker&烧瓶/ Python的。

Flask应用程序是使用Gunicorn使用默认设置启动的,这在过去一直不是问题。

我的Docker环境使用

运行
docker run -t -i -d --name pv -v $PWD:/app/code -p 5000:5000 -p 5555:5555 --link redis_db:redis_db my_image

上个月再次没有改变。

这个项目已经有两个多月了,从一开始就一直使用Docker而没有任何问题。

自从这个错误开始以来我唯一记得的事情就是我必须做一个Hard GIT重置才能撤回一个提交。

我已尝试过的事情。

  • 使用不同的IDE查看它是否对编码做了一些奇怪的事情。

  • 加载时将JavaScript文件声明为utf-8。

  • 在不同的浏览器中加载。 Chrome抛出" Uncaught SyntaxError:意外 令牌ILLEGAL"。和其他浏览器类似。

  • 使用较旧的Docker文件。

  • 从其他视图模板加载脚本。

老实说,我不知所措。任何帮助将不胜感激。

修改

要添加到此,我现在似乎只在使用Gunicorn运行应用程序时遇到错误。

1 个答案:

答案 0 :(得分:0)

您将实际字节值指定为:(239,191,189)

这是U + FFFD,unicode替换字符:

http://www.fileformat.info/info/unicode/char/0fffd/index.htm

我的猜测是你在编辑器无法显示或编辑的文件中写了一个坏字符(正如你在文件末尾添加/删除字符时的奇怪行为所解释的那样)。

我会忘记docker,javascript,IDE,浏览器等,只需查看文件的原始字节并在必要时替换它们。您可以使用python执行此操作:

>>> data = open('something.js').read()

# view the last 8 bytes of the file
>>> data[-8:]
...

# if you see the last 3 bytes of the file are the bad 239, 191, 189 sequence,
# (displayed as "\xef\xbf\xbd" in python), then chop them off:
>>> open('something.js', 'w').write(data[:-3])

# or if they occur somewhere else,
# use some other string processing to replace them..
>>> open('something.js', 'w').write(data.replace("\xef\xbf\xbd", ""))