我想在用 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'
答案 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 已更新:
module
上的冲突已在this PR
process
已添加到this commit
原始问题中的代码现在仅需要 @ 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;]
更改.hotif (module.hot) {
module.hot.accept();
module.hot.dispose(() => {
使用
if (module['hot']) {
module['hot'].accept();
module['hot'].dispose(() => {