Skip to content

Using npm MV3 version with your own background.js  #10

@bbest31

Description

@bbest31

The current examples in documentation and this repository aren't every helpful in the sense that they use an imported background.js.

Most extensions will be making use of this script and therefore can't set the service worker to be @inboxsdk/core/background.js in the webpack configuration file.

I had to do the following just to make this sdk realistically usable:

  1. Add the following code snippet to my chrome.runtime.onMessage.addListener conditional tree
if (request.type === 'inboxsdk__injectPageWorld' && sender.tab) {
    if (chrome.scripting) {
      // MV3
      chrome.scripting.executeScript({
        target: { tabId: sender.tab.id },
        world: 'MAIN',
        files: ['pageWorld.js'],
      });
      sendResponse(true);
    } else {
      // MV2 fallback. Tell content script it needs to figure things out.
      sendResponse(false);
    }
  } 
  1. Add the pageWorld.js file to my entry list in the webpack file.
  entry: {
    popup: PATHS.src + '/popup.jsx',
    background: PATHS.src + '/background.js',
    contentScript: PATHS.src + '/contentScript.js',
    pageWorld: '@inboxsdk/core/pageWorld.js',
  },

The documentation and/or example needs to be updated to show these extra steps if the package can't be improved to not need them.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions