#javascript #reactjs #webpack #typeerror
#javascript #reactjs #webpack #ошибка типа
Вопрос:
Я прочитал все, что нашел, я даже добрался до второй страницы Google. Я удалил node_module
s и после npm install
. У меня все время возникает это:
Unhandled Rejection (TypeError): Cannot read property 'call' of undefined
_callee$
C:/src/client/proxy.ts:28
25 | });
26 | }
27 |
> 28 | export async function call<RESULT>(method: string, ...params: any[]) {
29 | return rpc.call<RESULT>(method, ...params);
30 | }
31 |
Фрагмент кода, который вы видите, является частью SDK, который я использую.
Точно такие же функции используются в учебном пособии, которое я скачал. Если я запускаю учебник, он работает,
в то время как если я запускаю свой React.js веб-приложение, в котором я получаю сообщение об ошибке.
Я сравнил package.json
файлы, и они имеют одинаковые зависимости.
У меня мало опыта, поэтому я не знаю, полезно ли это: tsconifg.json
файлы разные.
Это proxy.ts:
import { WindowPostMessageProxy } from '@ont-community/window-post-message-proxy';
import { Rpc } from '../rpc/rpc';
let windowProxy: WindowPostMessageProxy;
let rpc: Rpc;
export function registerClient({
logMessages = false,
logWarnings = false
}: {
logMessages?: boolean;
logWarnings?: boolean;
}) {
windowProxy = new WindowPostMessageProxy({
name: 'page',
target: 'content-script',
logMessages,
suppressWarnings: !logWarnings
});
rpc = new Rpc({
source: 'page',
destination: 'background',
logMessages: false,
postMessage: windowProxy.postMessage.bind(windowProxy, window)
});
}
export async function call<RESULT>(method: string, ...params: any[]) {
return rpc.call<RESULT>(method, ...params);
}
rpc.ts:
import { Caller, Tunnel, TunnelOptions } from './tunnel';
export type MethodType = (...params: any[]) => any;
interface MethodCallType {
method: string;
params: any[];
}
export class Rpc {
private tunnel: Tunnel<MethodCallType>;
private methods: Map<string, MethodType>;
constructor(options: TunnelOptions) {
options.messageHandler = this.messageHandler.bind(this);
this.tunnel = new Tunnel(options);
this.methods = new Map();
}
call<RESULT = any>(method: string, ...params: any[]) {
const msg = {
method,
params
};
return this.tunnel.send<RESULT>(msg);
}
register(name: string, method: MethodType) {
this.methods.set(name, method);
}
private messageHandler(msg: MethodCallType, caller: Caller) {
const method = this.methods.get(msg.method);
if (method === undefined) {
throw new Error('Unregistered method call: ' msg.method);
}
return method.call(caller, ...msg.params);
}
}
Комментарии:
1. rpc не определен… где создается экземпляр rpc?
2. не могли бы вы записать весь файл proxy.ts?
3. Я редактировал весь файл proxy.ts
4. @DarioRega готово!
5. rpc из модуля узла или пользовательского? если пользовательское, пожалуйста, покажите код тоже