2015-10-30 22 views
0

我想創建簡單的Mozilla附加使用外部JS文件;Mozilla的JetPack無效的文件名

文件夾&文件

/var/www/html/add-ons/hello 
/var/www/html/add-ons/hello/index.js 
/var/www/html/add-ons/hello/package.json 
/var/www/html/add-ons/hello/script/data/test.js 

/var/www/html/add-ons/hello/index.js

// Import the page-mod API 
var pageMod = require("sdk/page-mod"); 

// Create a page-mod 
pageMod.PageMod({ 
    include    : "*", 
    contentScriptFile : "./test.js", 
    contentScript: 'window.alert("loaded");' 
}); 

在/ var/www/html等/加-ons/hello/package.json

{ 
    "title": "My Jetpack Addon", 
    "name": "test", 
    "version": "0.0.1", 
    "description": "A basic add-on", 
    "main": "index.js", 
    "author": "", 
    "engines": { 
    "firefox": ">=38.0a1", 
    "fennec": ">=38.0a1" 
    }, 
    "license": "MIT", 
    "keywords": [ 
    "jetpack" 
    ] 
} 

/var/www/html/add-ons/hello/script/data/test.js

alert("Hello World");

命令我運行以測試

cd /var/www/html/add-ons/hello

jpm init(實際上package.json文件是由此命令創建的)

jpm run -b /usr/bin/firefox(我使用Ubuntu所以我這樣運行)

我測試它現場,我得到loaded警報但是我得到以下錯誤;

console.error: script: Error opening input stream (invalid filename?): resource://script/data/test.js

的文件夾和文件已經在根文件夾中存在。

如果這是根; /var/www/html/add-ons/hello應該不是resource://script/data/test.js是指/var/www/html/add-ons/hello/script/data/test.js

我在哪裏做錯了?

+0

哪裏是U運行JPM運行的呢?它必須來自'/ var/www/html/add-ons/hello'文件夾? – Nandu

+0

也轉儲您的附加根文件夾的整個文件夾結構 – Nandu

+0

@Nandu感謝您的答覆。是的,我在'''/ var/www/html/add-ons/hello'''上運行JPM也許更好的問題是'''resource://'''指的是什麼? – Revenant

回答

1

如下創建您的文件夾結構: 根文件夾:在/ var/www/html等/插件/你好

地方index.js,根文件夾中的package.json。 將附件中打包的所有數據移動到:/ var/www/html/add-ons/hello/data

轉到根文件夾 -/var/www/html/add-ons /你好 運行jpm運行-b

這將創建一個xpi包,用臨時配置文件啓動firefox.exe,安裝加載項。

ex: this is from win 7 x64 test project: 

root directory: E:\Training\using_Angular 

Directory of E:\Training\using_Angular 

11/01/2015 08:26 AM <DIR>   . 
11/01/2015 08:26 AM <DIR>   .. 
09/29/2015 05:04 PM <DIR>   data 
09/29/2015 05:02 PM    548 index.js 
08/12/2015 08:26 PM    221 package.json 

Directory of E:\Training\using_Angular\data 

09/29/2015 05:04 PM <DIR>   . 
09/29/2015 05:04 PM <DIR>   .. 
09/29/2015 05:04 PM <DIR>   images 
08/12/2015 08:26 PM    446 lang.json 
09/29/2015 05:04 PM <DIR>   lib 
09/29/2015 05:04 PM <DIR>   scripts 
09/29/2015 05:04 PM <DIR>   styles 
09/29/2015 05:04 PM <DIR>   html 


Directory of E:\Training\using_Angular\data\html 
08/12/2015 08:26 PM    446 pagescript.html 

運行期間,'resource://'文件夾引用打包在您的加載項中的內容。

爲前:資源://caaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/data/html/pagescript.html

+0

您還可以分享'''package.json'''的結構嗎?名稱爲''''''''''由於'''/ var/www/html/add-ons/hello/script/data /'''不起作用,根據你的例子,我試圖在'''test.js''中' ''/ var/www/html/add-ons/hello/data/script /'''它仍然不起作用! – Revenant

+0

順便說一句'''jpm run -b/usr/bin/firefox'''可能以這種方式執行是問題所在?我不能通過'''jpm run -b'''運行它會導致這個錯誤; '''錯誤:選項'-b,--binary 'argument missing'''這是Ubuntu相關的問題。 – Revenant

+0

請將您的代碼上傳到github並分享鏈接,我可以看看 – Nandu