Мне удалось создать небольшое приложение с использованием AspNetCore 2.2, SignalR и интерфейса TypeScript. Пакет создается через WebPack.
Я бы хотел попробовать включить плагин протокола MessagePack. Однако документы о том, как для установки кажется недостаточно точной. Хотя компиляция из командной строки (npm run build) явно идет нормально, когда я запускаю приложение для отладки, оно не компилируется, потому что что-то в коде TypeScript отсутствует:
Ошибка сборки TS2688: не удается найти файл определения типа для «узла». C: \ ... \ node_modules @ aspnet \ signalr-protocol-msgpack \ dist \ esm \ MessagePackHubProtocol.d.ts 1
Ошибка сборки TS2580: не удается найти имя «Буфер». Вам нужно установить определения типов для узла? Попробуйте
npm i @types/node
, а затем добавьтеnode
в поле типов в файле tsconfig. C: \ ... \ node_modules @ aspnet \ signalr-protocol-msgpack \ dist \ esm \ MessagePackHubProtocol.d.ts 16
Кстати, если я последую этому совету, дела пойдут еще хуже из-за присутствия "setTimeout" в моем коде. По сути, кажется, что setTimeout «node» переопределяет «window», и их сигнатуры не совпадают.
Вот package.json (без патча с подсказками):
{
"version": "1.0.0",
"name": "asp.net",
"private": true,
"devDependencies": {
"del": "2.2.0",
"@types/jquery": "^3.3.29",
"ts-loader": "^5.3.3",
"typescript": "^3.2.2",
"webpack": "^4.28.3",
"webpack-cli": "^3.2.1",
"webpack-merge-and-include-globally": "^2.1.14",
"clean-webpack-plugin": "^1.0.0"
},
"dependencies": {
"@aspnet/signalr": "^1.1.0",
"@aspnet/signalr-protocol-msgpack": "^1.1.0",
"axios": "^0.18.0",
"bootstrap": "^4.2.1",
"jquery": "^3.3.1"
},
"scripts": {
"build": "webpack --mode=development",
"watch": "webpack --mode=development --watch",
"release": "webpack --mode=production",
"test": "echo \"Error: no test specified\" && exit 1"
}
}
Наконец, вот файл tsconfig.json:
{
"compilerOptions": {
"noImplicitAny": false,
"noEmitOnError": true,
"removeComments": false,
"sourceMap": true,
"target": "es5",
"lib": [ "es6", "dom" ]
},
"exclude": [
"node_modules",
"wwwroot"
]
}
Это я, а может где-то ошибка?