I'm using browserify to manage a Chrome extension, and while in general it appears to work well, there's a problem that comes with browserify embedding the library code in some wrappers. In particular, when accessing chrome.extensions.getBackgroundPage()
from a Chrome extension plugin as described, e.g., here, not all (none?) of the background page's local variables can be accessed. This can be reproduced by anyone by wrapping background.js
in
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
//[...]
},{}]},{},[1]);
as browserify does.
I'm not sure what kind of magic (if any) is behind chrome.extension.getBackgroundPage()
, but maybe someone else has an idea.