2015-10-05 12 views
-2

我剛剛擴展了一個在webGL中模擬OpenGL1/glu/glut的(草稿)lib。 對於少數人的第一個演示崩潰「需要」我的lib中,控制檯說:「非法令牌」(見distrib page,例如第一次演示「fractal」。)eval上的ILLEGAL TOKEN(由require()完成的)

谷歌搜索大量講述非法TOKEN歸因於零寬度空間(複製粘貼時經常出現祕密乘客),但在我的文件中並非如此。 那麼它會是什麼?

謝謝!

+0

您正在將所有JS代碼直接嵌入到HTML文檔中,並且所有內容都位於全局範圍內 - 您爲什麼堅持在第一個使用RequireJS地方?混合模塊化和非模塊化的代碼通常是災難的配方 – kryger

+0

我使用的require需要包括在C中使用:我不想用我的子包含來惹惱用戶,+我想組織它們在一個「lib 「文件夾(知道gl-matrix已經使用文件夾並要求)讓用戶只能看到他的文件,而且我不會污染全局空間:-)。 無論如何require()是相當標準的,我的lib在大多數機器上工作。或者你認爲我做錯了什麼可能會導致第一個需求(mylib)(在某些機器上eval(mylib)表示'非法令牌')的問題? –

回答

-1

我發現了這個bug:對於一些舊版本的瀏覽器,反引號(即模板字符串) - 見ECMA-262 compatibility。 Require()使用eval(),如果所需的js文件包含反引號,則eval將嚴重失敗。

如果你想與IE瀏覽器,Safari瀏覽器和2015年前的Chrome,Firefox,Opera版本兼容,請不要使用反引號:-(但是不要使用「... \ n」+以封裝多行字符串,如着色器,幫助文本等。

+0

這似乎並不是RequireJS特定的,那麼只是一般性建議:舊版瀏覽器不能與ES6一起使用,因爲它們是...舊的?另外,我知道你正在看着我,因爲以前的評論版本是通過@指向我的;我剛剛投了第三票,所以是+ 1/-2;這是我在這裏的第一票。你不應該通過跳到結論來嚇唬他們,而是讓他們對你的問題發表評論。 – kryger

+0

「ES6是新的」:是的,但我根本不知道反引號是最近的一個功能,因爲多行字符串非常自然,並且出現在許多在線tuto中。一旦你知道你正在使用的每個功能的(可能年輕)年齡,你幾乎已經解決了這些錯誤!我想大多數人都不屬於這個類別,特別是JS的初學者(儘管我是其他語言的高級人員,但我是這樣的)。 –

+0

不需要-js特定:真(我不認爲我聲明,否則:-))。 仍然,plainty的人會有問題使用require-js(甚至不知道它使用eval有問題)。這就是爲什麼即使我們告訴eval,我想在這裏提到它是非常重要的。 –

相關問題