2015-10-30 23 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