Webpack TypeScript module.hot不存在

时间:2016-11-12 22:05:43

标签: node.js typescript webpack webpack-hmr

我想在用 TypeScript 编写的 NodeJS 项目中启用 Webpack HMR

但是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'

6 个答案:

答案 0 :(得分:25)

很少有人在这里写道,这是最好的方式:

npm i -D @types/webpack-env

对我而言,它按预期工作,解决了未识别hot属性的问题。

在我的项目中,我使用的是这些版本:

"@types/node": "^8.0.19",
"@types/webpack-env": "^1.13.0"

我不知道问题是否仍然是最新的,但是我的问题安装webpack类型可以帮助我。

答案 1 :(得分:14)

冲突解决

@ types / webpack-env 已更新:

原始问题中的代码现在仅需要 @ types / webpack-env

但是同时导入 @ types / node 不再冲突。


安装

npm install --save-dev @types/webpack-env

如果还需要NodeJS环境定义:

npm install --save-dev @types/node

答案 2 :(得分:9)

可以像在文件顶部添加以下行一样简单。

///<reference types="webpack-env" />

答案 3 :(得分:5)

您可以扩充全局范围并使用接口合并重新打开pracma接口并添加缺少的NodeModule属性。

hot

但实际上,这种扩充应该可以在Webpack声明文件本身中完成。

答案 4 :(得分:1)

此问题已解决

yarn add @types/webpack-env --dev

VScode可以立即运行

Intellij需要重新启动

答案 5 :(得分:0)

通过[&#39; hot&#39;]

更改.hot
if (module.hot) {
    module.hot.accept();
    module.hot.dispose(() => {

使用

if (module['hot']) {
    module['hot'].accept();
    module['hot'].dispose(() => {