2013-08-22 32 views
2

由於我正在使用GWT項目創建一個Chrome擴展,我想使用單腳本鏈接器來避免內聯腳本限制(嘆息......)。 而且我發現在網上這個資源:http://tech-drum.blogspot.ch/2012/08/gwt-chrome-extension-using-version-2.html應用單腳本鏈接器時編譯錯誤

這種單一的腳本鏈接看起來像一個魅力,但是當我真正加入到我的gwt.xml文件和編譯,它得到了錯誤......(再次感嘆)

以下是錯誤消息:

[INFO] --- gwt-maven-plugin:2.5.1:compile (default) @ fake-app --- 
[INFO] auto discovered modules [com.fake...] 
[INFO] Compiling module com.fake.name.app 
[INFO] Compiling 6 permutations 
[INFO]  Compiling permutation 0... 
[INFO]  Process output 
[INFO]   Compiling 
[INFO]    Compiling permutation 3... 
[INFO]  Process output 
[INFO]   Compiling 
[INFO]    Compiling permutation 1... 
[INFO]  Process output 
[INFO]   Compiling 
[INFO]    Compiling permutation 2... 
[INFO]  Compiling permutation 4... 
[INFO]  Compiling permutation 5... 
[INFO] Compile of permutations succeeded 
[INFO] Linking into /path/to/fake/app 
[INFO] Invoking Linker Single Script 
[INFO]  [ERROR] The module must have exactly one distinct permutation when using the Single Script Linker; found 6 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 

這個有什麼問題呢?它看起來排列數(假定爲js文件?)比預期的要大,但是在創建排列時不應該讓鏈接器限制大小?總之,如何解決這個問題?非常感謝!

回答

1

鏈接器在之後運行代碼被編譯後,它不能對該輸出做出判斷。這個特定的鏈接器期望生成一個JS文件(加上圖像等,但不是更多的代碼),因此'單一​​腳本'。生成一個以上的排列組合可以阻止它完成工作。

考慮選擇不同的連接,或者與這個在你的模塊文件中的所有您正在使用(可能只是user.agent)的屬性組合成一個置換(從http://code.google.com/p/google-web-toolkit/wiki/SoftPermutations):

<collapse-all-properties /> 
+0

注意:'xsiframe'鏈接器應在Chrome擴展程序和應用工作(可能有一些配置調整,記不清了) –

+0

參見[7685問題(https://code.google.com/p/google-web-toolkit/issues/detail?id = 7685),[issue 8047](https://code.google.com/p/google-web-toolkit/issues/detail?id=8047)和[issue 8207](https://code.google.com/p/google-web-toolkit/issues/detail?id=8207)等等。您可能還必須放鬆應用程序/擴展程序的CSP。 –

2

只選擇Chrome的用戶代理應該修復您的問題。

由於您的擴展只適用於一個瀏覽器,因此您不需要更多的用戶代理排列。

您正在使用的鏈接器是用於生成擴展名代碼的JavaScript文件的正確鏈接器。

<set-property name="user.agent" value="safari" /> 
+0

哎呀,我錯過了這是爲了擴展Chrome,所以這是比我給出的更清晰的解決方案+1。 –