Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[bug] Using Rainbow Chrome Extension and rainbow-kit in dev environment causes Error in invocation of runtime.sendMessage #1381

Open
1 task done
softwarecurator opened this issue Jan 25, 2024 · 10 comments

Comments

@softwarecurator
Copy link

Is there an existing issue for this?

  • I have searched the existing issues

RainbowKit Version

1.1.3

wagmi Version

1.4.5

Current Behavior

TypeError: Error in invocation of runtime.sendMessage(optional string extensionId, any message, optional object options, optional function callback): chrome.runtime.sendMessage() called from a webpage must specify an Extension ID (string) for its first argument.

Expected Behavior

No error lol

Steps To Reproduce

  "dependencies": {
    "@headlessui/react": "^1.7.17",
    "@heroicons/react": "^2.0.18",
    "@rainbow-me/rainbowkit": "^1.1.3",
    "@rainbow-me/rainbowkit-siwe-next-auth": "^0.3.2",
    "alchemy-sdk": "^2.10.1",
    "ethers": "^5.7.2",
    "mongoose": "^8.0.0",
    "next": "^14.0.1",
    "react": "^18",
    "react-dom": "^18",
    "react-hot-toast": "^2.4.1",
    "siwe": "^2.1.4",
    "swr": "^2.2.4",
    "viem": "^1.18.0",
    "wagmi": "^1.4.5"
  },

clicking connect just throws error

Link to Minimal Reproducible Example (CodeSandbox, StackBlitz, etc.)

No response

Anything else?

No response

@magiziz
Copy link
Contributor

magiziz commented Jan 26, 2024

@softwarecurator Do you have a small reproducible example ? It'll be easier for us to reproduce this issue on our end. Otherwise we'll just install the packages you've provided, but not get the same error.

@DanielSinclair
Copy link
Contributor

@softwarecurator Another follow-up question! Which browser are you using? Do you have any other extensions installed?

@magiziz
Copy link
Contributor

magiziz commented Feb 8, 2024

@softwarecurator Any updates ?

@magiziz
Copy link
Contributor

magiziz commented Feb 13, 2024

Closing this issue for now due to inactivity. Please raise another issue if the problem still persists.

@magiziz magiziz closed this as completed Feb 13, 2024
@billsbooth
Copy link

Hitting this same issue; on Chrome, Version 122.0.6261.69 (Official Build) (arm64), have latest Rainbow Wallet, Metamask, and Phantom wallets installed.

@magiziz
Copy link
Contributor

magiziz commented Feb 28, 2024

@billsbooth What exactly did you do to get the same error ? Is there a reproducible example you can show us ?

@DanielSinclair DanielSinclair transferred this issue from rainbow-me/rainbowkit Mar 6, 2024
@DanielSinclair DanielSinclair reopened this Mar 6, 2024
@RohanNero
Copy link

I got the same error while using Chrome Version 124.0.6367.119 (Official Build) (64-bit).

Not a real solution but changing Rainbow Wallet's This can read and change site data field to When you click the extension made the error stop showing up.

@AtelyPham
Copy link

I still have this issue on Chrome v125.0.6422.113 (Official Build) (arm64).

CleanShot 2024-06-05 at 10 27 12@2x

When I click to jump to the source code, the error line is here:

CleanShot 2024-06-05 at 10 28 59@2x

I believe this error originates from the function found here:

function sendMessage<TPayload>(
message: SendMessage<TPayload>,
{ tabId }: { tabId?: number } = {},
) {
if (!tabId) {
chrome?.runtime?.sendMessage?.(message);
} else {
chrome.tabs?.sendMessage(tabId, message);
}
}
.

@aspiers
Copy link

aspiers commented Aug 13, 2024

I am seeing this too, on Chrome 126.0.6478.61 (Official Build) (64-bit) and Rainbow 1.5.23.

@aspiers
Copy link

aspiers commented Aug 13, 2024

https://developer.chrome.com/docs/extensions/reference/api/runtime#method-sendMessage says the function signature is:

chrome.runtime.sendMessage(
  extensionId?: string,
  message: any,
  options?: object,
  callback?: function,
)

and documents the extensionId parameter as follows:

The ID of the extension to send the message to. If omitted, the message will be sent to your own extension/app. Required if sending messages from a web page for web messaging.

So it seems very likely that the culprit is the code on line 28 which calls chrome.runtime.sendMessage:

chrome?.runtime?.sendMessage?.(message);

and that at least one of the following is true:

  • it's incorrectly being called without the extensionId parameter
  • the containing helper function should never be called from within the webpage (e.g. from a content script)
  • when called from within the webpage, tabId is supposed to be set but isn't for some reason

More details here about how the chrome.runtime API should be used for messaging can be found here: https://developer.chrome.com/docs/extensions/develop/concepts/messaging#external-webpage

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants