尝试通过app.yaml

时间:2015-08-02 15:38:01

标签: javascript google-app-engine web

我正在尝试为我可以通过JavaScript访问的网络应用提供一些音频。

音频文件(大小约为20 kB)位于root/sounds文件夹中;就像我使用其他静态文件(css样式表,JavaScript文件,图像等)一样,我将其添加到我的app.yaml:

- url: /sounds
  static_dir: sounds

但是当我尝试部署我的应用程序时,该工具会抛出此错误:

2015-08-02 17:34:35,805 ERROR appcfg.py:2621 An unexpected error occurred. Aborting. 
Traceback (most recent call last):
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appcfg.py", line 2459, in DoUpload
    self._UploadMissingFiles(missing_files, openfunc)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appcfg.py", line 2600, in _UploadMissingFiles
    self.blob_batcher.Flush()
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appcfg.py", line 1464, in Flush
    self.SendBatch()
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appcfg.py", line 1423, in SendBatch
    payload,
UnicodeDecodeError: 'ascii' codec can't decode byte 0xff in position 40: ordinal not in range(128)

这是Google App Engine的错误,还是我做错了什么?

我在Windows 10上,如果这有所不同。

1 个答案:

答案 0 :(得分:1)

更新:我最初的怀疑是偏离目标。隐藏在评论中的修复方法是将音频文件的mime_type:添加到app.yaml

更新2:跟踪它。 appcfg使用mimetypes,它尝试从本地系统获取mime类型映射的扩展,以与静态文件关联。对于Windows,这意味着咨询注册表。新安装的Windows 10并不知道.mp3是什么。 mime_type:中的app.yaml覆盖会绕过查找。

这是一个有趣的堆栈跟踪。我怀疑它可能与sounds中的一个或多个文件名有关,但我没有可以使用Win10进行实验。

是否有任何文件名包含扩展字符集中的字符? (例如,变音符号或其他非ascii)?如果您不想显示名称,一个简单的实验就是查看您是否在sounds中使用单个文件上传了应用版本,其中该文件具有通用名称(如{{ 1}})。如果可行的话,那就是缩小导致问题的名称的问题。

添加:首先尝试使用和清空example.mp3目录进行上传,以排除问题出在其他地方的情况。你已经试过了吗?