Модуль Webpack TypeScript.hot не существует
Я хочу, чтобы Webpack HMR на NodeJS написано машинопись.
но module.hot
не имеется:
-
@types / webpack-env определение:
declare var module: __WebpackModuleApi.Module
-
конфликты с @types / node определение:
declare var module: NodeModule
удаление @types / node решает проблему, но отключает process
:
process.env.NODE_ENV === 'production' // [ts] Cannot find name 'process'.
5 ответов
как мало парней писали здесь, это лучший способ:
npm i -D @types/webpack-env
для меня он работает как ожидалось, решая проблему с не распознанным hot
собственность.
В моем проекте я использую эти версии:
"@types/node": "^8.0.19",
"@types/webpack-env": "^1.13.0"
Я не знаю, если вопрос все еще актуален, но для моей проблемы установка типов для webpack поможет мне.
может быть, просто добавив следующую строку в верхней части файла.
///<reference types="webpack-env" />
вы можете увеличить глобальную область и использовать слияние интерфейса для повторного открытия NodeModule
интерфейс и добавить недостающие hot
собственность.
import webpack = require("webpack");
declare global {
interface NodeModule {
hot: {
accept(dependencies: string[], callback: (updatedDependencies: string[]) => void): void;
accept(dependency: string, callback: () => void): void;
accept(errHandler?: (err: any) => void): void;
decline(dependencies: string[]): void;
decline(dependency: string): void;
decline(): void;
dispose(callback: (data: any) => void): void;
addDisposeHandler(callback: (data: any) => void): void;
removeDisposeHandler(callback: (data: any) => void): void;
// ...
}
}
}
но на самом деле это увеличение потенциально должно быть сделано в самом файле объявления Webpack.
@types / webpack-env было так:
конфликт
module
было решено в этот PRprocess
добавлено в этот коммит
код в исходном вопросе теперь нужен только @types / webpack-env.
но импорт @types / node alongside больше не будет конфликтовать.
изменить .hot by ['hot']
if (module.hot) {
module.hot.accept();
module.hot.dispose(() => {
использовать
if (module['hot']) {
module['hot'].accept();
module['hot'].dispose(() => {