在我的发展过程中发生了一些非常随机的事情,我不能为我的生活弄清楚出了什么问题或原因。
我在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运行应用程序时遇到错误。
答案 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", ""))