Я столкнулся с этой же проблемой.Вы думаете, что было бы очевидное решение.Вот что я делал для Firefox (не работал с Chrome):
У меня есть файл lib / dbg.js, содержащий мои основные функции отладки, которые я хочу использовать везде.
В каждом модуле содержимого сценариев в моем main.js у меня есть это:
contextMenu.Item({
...
contentScript: export_internals(require('dbg')),
contentScriptFile: my-actual-scripts.js
...
, а затем в main у меня есть функция
function export_internals(module) {
var code = '';
for (name in module) {
var val = module[name];
if (val.constructor === String)
code += name + ' = "' + val + '";';
else
code += val;
}
return code;
}
, которая в основном просто циклически проходит через экспортированные свойства(переменные, функции и т. д.) и использует такие вещи, как Function.toString (), чтобы в основном построить строковую версию модуля dbg и передать ее как встроенный скрипт содержимого.Эта функция, вероятно, не очень общая, поскольку я только что написал ее для обработки простых функций и строк (только два нужных мне типа данных), но этот принцип должен легко применяться, даже если вы просто делаете что-то вроде
contentScript: require('dbg').my_function.toString()
Это явно что-то вроде взлома, но пока довольно надежный.Это то, что вы искали?