5

jpm 版本是 1.1.3
npm 版本是 2.15.8
Node 版本是 4.4.7
Firefox 版本是 48.0

index.js的内容:

var self = require("sdk/self");  
console.log("************************************");

“jpm run”命令的输出

JPM [info] Starting jpm run on My Jetpack Addon  
JPM [info] Creating a new profile

根据index.js*文件的内容,应该在控制台上输出一行符号。但是,愿望输出不在控制台中。

代码有问题吗?

我的package.json文件的内容:

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

1 回答 1

13

jpm run不适用于 Firefox 48 或更高版本的发行版

问题不是jpm,而是您尝试将其与 Firefox 48 的发行版一起使用。从 Firefox 48 开始,Mozilla 已禁用将首选项设置xpinstall.signatures.requiredfalse允许加载未签名附加组件的功能。因此,您的附加组件被添加到该 Firefox 配置文件,但被禁用:

jpm run

使用 jpm run 禁用附加组件

您需要安装和使用不同版本的 Firefox

要测试您的插件,您需要安装不同版本的 Firefox,并使用-b选项jpm run来告诉jpm您使用哪个版本的 Firefox。假设您不想要旧版本的 Firefox,您可以选择Firefox Developer EditionFirefox NightlyUnbrand Beta 或 Unbrand Release

[注(2016-08-11):我在过去几天的测试表明,Firefox 48 的无品牌发布版本和 Firefox 49.0b2 的无品牌 Beta 版本出现了 48 或 49 中没有的问题,而这些版本是 Nightly 或 Developer Edition。当前的 Developer Edition (50.0a2) 或 Nightly (51.0a2) 中不存在这些问题。换句话说,我有一个插件可以在开发者版 (50.0a2) 和 Nightly (51.0a2) 中使用,并且在开发者版 (49.0a2) 和开发者版 (48.0a2) 中都可以使用,但它不能在无品牌版本 (48.0) 或无品牌 Beta (49.0b2) 中工作。因此,我建议此时不要使用无品牌版本的 Firefox。]

最简单的做法是下载Firefox Nightly并开始jpm使用:

jpm run -b nightly 

使用 jpm run -b nightly 启用附加组件

这个词nightly是一个快捷方式,它解析为 Firefox Nightly 的默认安装位置。根据您使用的操作系统,还有其他可以使用的快捷方式名称(例如firefoxfirefoxdevelopereditionbetanightlyaurora)。但是,它们不能在所有操作系统上正确解析。您始终可以选择指定要使用的 Firefox 版本的完整路径。

-b使用选项指定路径的另一种替代方法是将JPM_FIREFOX_BINARY环境变量更改为您希望与jpm.

注意:我已经在 MDN 上更新了jpm 的安装文档,以反映从 Firefox 48 开始需要有 Firefox 的非发布版本。如果您最近访问过该页面,您可能需要使用Ctrl-F5来按顺序刷新页面查看新内容。

于 2016-08-11T18:24:56.097 回答