2013年9月28日 星期六

LimeJS : 更新程序

前天晚上本來打算寫一個新的 HTML5 小遊戲,想說塵封已久的 LimeJS 就順便更新一下。一開始是弄不清楚 怎麼利用 git 來更新,後來不想浪費時間,直接放棄,由官網上直接下載壓縮檔來覆蓋。結果悲劇發生了,打開尚未 build 的舊遊戲,畫面居然空白一片。研究了好久,最後問題解決,但也乏了,程式還沒開工。

在 Chrome 裡按「F12」, Console 裡看到了兩行錯誤訊息:
  • Uncaught Error: Undefined nameToPath for goog.soy.data.SanitizedContentKind 
  • Uncaught TypeError: Object #<Object> has no method 'start' 
試著利用 lime.py 去 build 則會出現類似底下的錯誤訊息:

    main()
  File "E:\limejs\closure\closure/bin/build/closurebuilder.py", line 203, in mai
n
    tree = depstree.DepsTree(sources)
  File "E:\limejs\closure\closure\bin\build\depstree.py", line 56, in __init__
    raise NamespaceNotFoundError(require, source)
depstree.NamespaceNotFoundError: Namespace "goog.soy.data.SanitizedContentKind" never provided. Required in Source E:\limejs\lime\src\helper\soyutils_usegoog.js

上網找了半天,沒找到相關問題的解決方法。想說,問題看起來是在 「goog.soy.data.SanitizedContentKind」,索性先將 limejs 中「closure」目錄先改個目錄名稱,然後再執行底下指令:

python bin\lime.py init

對 lime.py 來說,因為找不到「closure」目錄,上面的「init」讓 lime.py 去重新下載 Google 的「closure」,並重新掃瞄整個目錄樹,更新「Closure deps file」。

下載並更新完「closure」,再打開遊戲網頁,問題果然迎刃而解。

LimeJS 的文件中好像沒有提到更新的程序,根據這次的經驗是:
  • 取得 LimeJS ,覆蓋原有的檔案
  • 將「closure」目錄刪除
  • 執行 bin\lime.py init
有空再找找是否有「一鍵更新」的方法。


沒有留言:

張貼留言

 
© 2009. Design by Pocket