无法在Next应用中集成near/wallet-selector



我正试图在我的Nextjs应用程序中集成附近/钱包选择器https://github.com/near/wallet-selector,但它失败了,错误窗口未定义。

ReferenceError: window is not defined
Uncaught     at new PersistentStorage (file://D:swapnode_modules@near-wallet-selectorcoreindex.umd.js:2444:50)
at <unknown> (file://D:swapnode_modules@near-wallet-selectorcoreindex.umd.js:2507:18)
at <unknown> (file://D:swapnode_modules@near-wallet-selectorcoreindex.umd.js:2:65)
at Object.<anonymous> (file://D:swapnode_modules@near-wallet-selectorcoreindex.umd.js:5:3)
at Module._compile (node:internal/modules/cjs/loader:1101:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Module.require (node:internal/modules/cjs/loader:1005:19)
at require (node:internal/modules/cjs/helpers:102:18)

我所做的一切

  • 尝试动态导入NearWalletSelector
const NearWalletSelector = dynamic(
() => import('@near-wallet-selector/core/'),
{
ssr: false,
}
);
  • 尝试使用
useEffect(() => {
if (typeof window !== "undefined") {
const selector = await NearWalletSelector.init({config...}).then((instance) => {
return instance.getAccounts().then(async (newAccounts) => {
syncAccountState(localStorage.getItem('accountId'), newAccounts);

window.selector = instance;
setSelector(instance);
});
})
.catch((err) => {
console.error(err);
alert('Failed to initialise wallet selector');
});
},[]}
}

有人能帮我解决这个问题吗?

感谢

此问题已在最新版本的near/wallet-selector中解决

将软件包更新到最新版本或通过

重新安装软件包
# Using Yarn
yarn add @near-wallet-selector/core
# Using NPM.
npm install @near-wallet-selector/core

,还需要按照建议安装所需的钱包包

那么我们就可以直接导入这个包,并像这样设置

import { setupWalletSelector } from "@near-wallet-selector/core";
import { setupModal } from "@near-wallet-selector/modal-ui";
import { setupNearWallet } from "@near-wallet-selector/near-wallet";
import { setupMyNearWallet } from "@near-wallet-selector/my-near-wallet";
import { setupSender } from "@near-wallet-selector/sender";
import { setupMathWallet } from "@near-wallet-selector/math-wallet";
import { setupNightly } from "@near-wallet-selector/nightly";
import { setupLedger } from "@near-wallet-selector/ledger";
import { setupWalletConnect } from "@near-wallet-selector/wallet-connect";
const selector = await setupWalletSelector({
network: "testnet",
modules: [
setupNearWallet(),
setupMyNearWallet(),
setupSender(),
setupMathWallet(),
setupNightly(),
setupLedger(),
setupWalletConnect({
projectId: "c4f79cc...",
metadata: {
name: "NEAR Wallet Selector",
description: "Example dApp used by NEAR Wallet Selector",
url: "https://github.com/near/wallet-selector",
icons: ["https://avatars.githubusercontent.com/u/37784886"],
},
}),
],
});
const modal = setupModal(selector, {
contractId: "guest-book.testnet"
});

最新更新