import { Avatar, Badge, Button } from 'recconect-ui'
error - ReferenceError: self is not defined
at Object.<anonymous> (C:\Users\ADMIN\Desktop\game\node_modules\recconect-ui\dist\index.js:2:299)
at Module._compile (node:internal/modules/cjs/loader:1126:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1180:10)
at Module.load (node:internal/modules/cjs/loader:1004:32)
at Function.Module._load (node:internal/modules/cjs/loader:839:12)
at Module.require (node:internal/modules/cjs/loader:1028:19)
at require (node:internal/modules/cjs/helpers:102:18)
at Object.recconect-ui (C:\Users\ADMIN\Desktop\game\.next\server\pages\index.js:1173:18)
at __webpack_require__ (C:\Users\ADMIN\Desktop\game\.next\server\webpack-runtime.js:33:42)
at eval (webpack-internal:///./src/components/AlertSubscription/index.tsx:9:70)
at Object../src/components/AlertSubscription/index.tsx (C:\Users\ADMIN\Desktop\game\.next\server\pages\index.js:570:1)
at __webpack_require__ (C:\Users\ADMIN\Desktop\game\.next\server\webpack-runtime.js:33:42)
at eval (webpack-internal:///./src/pages/index.tsx:9:87)
at Object../src/pages/index.tsx (C:\Users\ADMIN\Desktop\game\.next\server\pages\index.js:713:1)
at __webpack_require__ (C:\Users\ADMIN\Desktop\game\.next\server\webpack-runtime.js:33:42)
at __webpack_exec__ (C:\Users\ADMIN\Desktop\game\.next\server\pages\index.js:1183:39)
at C:\Users\ADMIN\Desktop\game\.next\server\pages\index.js:1184:28
at Object.<anonymous> (C:\Users\ADMIN\Desktop\game\.next\server\pages\index.js:1187:3)
at Module._compile (node:internal/modules/cjs/loader:1126:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1180:10)
at Module.load (node:internal/modules/cjs/loader:1004:32)
at Function.Module._load (node:internal/modules/cjs/loader:839:12)
at Module.require (node:internal/modules/cjs/loader:1028:19)
at require (node:internal/modules/cjs/helpers:102:18)
at Object.requirePage (C:\Users\ADMIN\Desktop\game\node_modules\next\dist\server\require.js:88:12)
at C:\Users\ADMIN\Desktop\game\node_modules\next\dist\server\load-components.js:48:73
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async Object.loadComponents (C:\Users\ADMIN\Desktop\game\node_modules\next\dist\server\load-components.js:48:26)
at async DevServer.findPageComponents (C:\Users\ADMIN\Desktop\game\node_modules\next\dist\server\next-server.js:563:36)
at async DevServer.findPageComponents (C:\Users\ADMIN\Desktop\game\node_modules\next\dist\server\dev\next-dev-server.js:1041:20)
at async DevServer.renderPageComponent (C:\Users\ADMIN\Desktop\game\node_modules\next\dist\server\base-server.js:951:24)
at async DevServer.renderToResponse (C:\Users\ADMIN\Desktop\game\node_modules\next\dist\server\base-server.js:980:32)
at async DevServer.pipe (C:\Users\ADMIN\Desktop\game\node_modules\next\dist\server\base-server.js:407:25)
at async Object.fn (C:\Users\ADMIN\Desktop\game\node_modules\next\dist\server\next-server.js:759:21)
at async Router.execute (C:\Users\ADMIN\Desktop\game\node_modules\next\dist\server\router.js:253:36)
at async DevServer.run (C:\Users\ADMIN\Desktop\game\node_modules\next\dist\server\base-server.js:384:29)
at async DevServer.run (C:\Users\ADMIN\Desktop\game\node_modules\next\dist\server\dev\next-dev-server.js:743:20)
at async DevServer.handleRequest (C:\Users\ADMIN\Desktop\game\node_modules\next\dist\server\base-server.js:322:20) {
page: '/'
ReferenceError: self is not defined
может возникать, если библиотека использует конструкцию "self" для ссылки на глобальный объект в браузере, а в Next.js приложении используется Node.js серверный код, который не имеет доступа к глобальному объекту self
(обычно его делают алиасом для this или window).import React, { useState } from 'react';
function MyComponent() {
const [library, setLibrary] = useState(null);
async function loadLibrary() {
const { Avatar, Badge, Button } = await import('recconect-ui');
setLibrary({ Avatar, Badge, Button });
}
return (
<div>
<button onClick={loadLibrary}>Load Library</button>
{library && (
<div>
<library.Avatar />
<library.Badge />
<library.Button />
</div>
)}
</div>
);
}
recconect-ui
внутри компонента MyComponent
и сохраняем его в состоянии компонента. Когда пользователь нажимает на кнопку, мы загружаем библиотеку и сохраняем ее компоненты в другом состоянии, которое затем используется для отображения компонентов библиотеки.recconect-ui
как свой пакет на npm - это было не обязательно делать для ведения локальной разработки. Вам нужно починить свою библиотеку.