kub*_*ube 28 node.js typescript webpack webpack-hmr
我想启用的WebPack HMR中的NodeJS写在项目打字稿.
但是module.hot
不可用:
@ types/webpack-env定义:
declare var module: __WebpackModuleApi.Module
Run Code Online (Sandbox Code Playgroud)哪个与@ types/node定义冲突:
declare var module: NodeModule
Run Code Online (Sandbox Code Playgroud)删除@ types/node,解决了问题,但禁用了process
:
process.env.NODE_ENV === 'production' // [ts] Cannot find name 'process'
Run Code Online (Sandbox Code Playgroud)
Woo*_*aSh 32
很少有人在这里写道,这是最好的方式:
npm i -D @types/webpack-env
Run Code Online (Sandbox Code Playgroud)
对我而言,它按预期工作,解决了未被承认的hot
财产问题.
在我的项目中,我正在使用这些版本:
"@types/node": "^8.0.19",
"@types/webpack-env": "^1.13.0"
Run Code Online (Sandbox Code Playgroud)
我不知道问题是否仍然是最新的但是我的问题安装webpack类型帮助我.
kub*_*ube 22
@ types/webpack-env自更新以来:
原始问题中的代码现在只需要@ types/webpack-env.
但是同时导入@ types/node并不会发生冲突.
npm install --save-dev @types/webpack-env
Run Code Online (Sandbox Code Playgroud)
如果您还需要NodeJS环境定义:
npm install --save-dev @types/node
Run Code Online (Sandbox Code Playgroud)
use*_*858 11
可以像在文件顶部添加以下行一样简单.
///<reference types="webpack-env" />
Run Code Online (Sandbox Code Playgroud)
您可以扩充全局范围并使用接口合并来重新打开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;
// ...
}
}
}
Run Code Online (Sandbox Code Playgroud)
但实际上,这种扩充应该可以在Webpack声明文件本身中完成.
归档时间: |
|
查看次数: |
9508 次 |
最近记录: |