我在python中运行本地服务器
python -c $'import SimpleHTTPServer;\nmap = SimpleHTTPServer.SimpleHTTPRequestHandler.extensions_map;\nmap[""] = "text/plain";\nfor key, value in map.items():\n\tmap[key] = value + ";charset=UTF-8";\nSimpleHTTPServer.test();' "$port"
编辑:这是传递给python -c
的命令字符串的可读版本,因此在伪代码中,上面的代码块可以像这样恢复:python -c $'command' "$port"
其中
命令部分是:
import SimpleHTTPServer
map = SimpleHTTPServer.SimpleHTTPRequestHandler.extensions_map
map[""] = "text/plain"
for key, value in map.items():
map[key] = value + ";charset=UTF-8"
SimpleHTTPServer.test()
我得到(貌似)随机404错误,阻止我的js正确执行。
更具体地说,我正在提供静态html页面及其链接的javascript文件
Chrome在net::ERR_ADDRESS_UNREACHABLE
页面上的此脚本标记上告诉我net::ERR_CONNECTION_REFUSED
,有时index.html
。
<script type="text/javascript" src="http://localhost:8000/lib/fonts.js"></script>
我有3种奇怪的行为,我不明白:
Failed to load response data
但如果我在新标签上打开链接'我实际上可以看到该文件!
如果我在另一个选项卡上加载文件http://localhost:8000/lib/fonts.js
并且我多次刷新,那么我永远不会收到错误。那么是谁造成了这个问题? Chrome,Python或我的js中的一些异步行为?
我怀疑js文件没有按顺序加载,所以其他js脚本找不到并使用它们。
EDIT2:
如果我切换服务器,例如使用内置的php服务器:
php -S localhost:8000
我不会得到错误
答案 0 :(得分:0)
好的,这似乎是由两个不同的问题引起的:
async
个节点上的任何<script>
个属性。特别是似乎从谷歌加载具有async
属性的jquery导致了大多数问题。很可能脚本的顺序没有保留但是我从来没有得到任何关于jquery未定义的错误,我在丢失的脚本上遇到错误/lib/fonts.js
很奇怪.. async
使事情变得更可靠,每10页刷新一次或多或少一次我仍然在不同的外部资源上遇到net::ERR_ADDRESS_UNREACHABLE
或net::ERR_CONNECTION_REFUSED
类型的错误,有时是js文件,有时在css文件上。使用php内置服务器更改python服务器似乎删除了剩余的随机错误。 所以php -S localhost:8000
比python对手更可靠(在我的情况下)。
注意:即使很难解决问题,我仍然不知道究竟是什么导致了错误,所以如果其他人有更好的答案,那么他就会这样做。非常欢迎发帖。我会暂时不接受这个答案。