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

在我的发展过程中发生了非常随机的事情,我不能为了我的生活找出什么地方出了问题或为什么。

我build立一个应用程序在Flask以及使用Docker。 一切都运行良好,直到现在。

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

如果我有一个文件

alert('random text'); 

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

 alert('randomer text'); 

我在文件的末尾有两个随机字符。 两者都像

   

如果我想从原始文件中删除字符,说

 alert('random'); 

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

 alert('random te 

正如你所看到的那样非常离奇。

在本地运行Flask时,一切正常,只有当我将所有东西加载到Docker中时,才会发生这种情况,所以我必须假设Docker和Flask / 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 

这一次在上个月没有变化。

这个项目已经有2个月的历史了,从一开始就一直在使用Docker,没有任何问题。

唯一发生的事情,我可以回想起,因为这个错误已经开始了,我必须做一个硬GIT重置回移一个提交。

我已经尝试过的东西。

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

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

  • 载入不同的浏览器。 Chrome抛出“Uncaught SyntaxError:Unexpected token ILLEGAL”。 和其他浏览器类似。

  • 使用较旧的Docker文件。

  • 从另一个视图模板加载脚本。

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

编辑

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

你给出了实际的字节值:(239,191,189)

这是U + FFFD,unicodereplace字符:

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

我的猜测是你已经写了一个不好的字符到你的编辑器不能显示或编辑的文件(正如你在添加/删除文件末尾的字符时所说的那样)。

我会忘记docker,JavaScript,IDE,浏览器等,只是看看文件的原始字节,并在必要时replace它们。 你可以使用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", ""))