【问题标题】:Mozilla JetPack Invalid FilenameMozilla JetPack 文件名无效
【发布时间】:2015-10-30 22:51:30
【问题描述】:

我正在尝试创建使用外部 JS 文件的简单 Mozilla 插件;

文件夹和文件

/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/add-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

我哪里做错了?

【问题讨论】:

  • 你从哪里运行 jpm run?它必须来自“/var/www/html/add-ons/hello”文件夹?
  • 同时转储插件根文件夹的整个文件夹结构
  • @Nandu 感谢您的回复。是的,我确实在 /var/www/html/add-ons/hello 上运行 JPM,也许更好的问题是这个 resource:// 指的是哪里?
  • 您的文件夹结构错误。请参阅答案以获取工作示例

标签: firefox-addon-sdk mozilla


【解决方案1】:

如下创建文件夹结构: 根文件夹:/var/www/html/add-ons/hello

将 index.js、package.json 放在根文件夹中。 将您的附加组件中打包的所有数据移动到:/var/www/html/add-ons/hello/data

转到根文件夹 - /var/www/html/add-ons/hello 运行 jpm run -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://”文件夹指的是您的插件中打包的内容。

例如:resource://caaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/data/html/pagescript.html

【讨论】:

  • 可以分享一下package.json的结构吗?名字是html 吗?由于/var/www/html/add-ons/hello/script/data/ 不起作用,根据您的示例,我尝试在/var/www/html/add-ons/hello/data/script/ 中使用我的test.js,它仍然不起作用!
  • 顺便说一句 jpm run -b /usr/bin/firefox 可能以这种方式执行它是问题吗?我无法通过jpm run -b 运行它,它给出了这个错误; error: option `-b, --binary &lt;path&gt;' argument missing 这是一个 Ubuntu 相关的问题。
  • 请将你的代码上传到github并分享一个链接,我可以看看
  • 我不使用 GitHub,我想我现在通过编辑它使我的问题变得更好。我会检查 GitHub 并回复你。谢谢。
  • 出于某种原因,我检查了它(重新启动笔记本电脑后,我很少这样做),它现在可以正常工作。我猜这与在没有重新启动或其他问题的情况下安装 JPM 有关,但它现在无需任何更改即可工作。谢谢。
猜你喜欢
  • 1970-01-01
  • 2020-05-17
  • 1970-01-01
  • 2021-12-21
  • 2013-08-31
  • 2011-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多