gpt4 book ai didi

typescript - 如何防止 TypeScript 中断基于 Webpack 的 ProvidePlugin 上声明的未解析变量的 Webpack 构建?

转载 作者:搜寻专家 更新时间:2023-10-30 20:40:32 25 4
gpt4 key购买 nike

在 typescript 编译器开始对实际上已经在 webpack 的 ProvidePlugin 配置上配置的未解析变量大喊大叫之后,有没有办法防止 WebPack 的构建过程失败?

webpack.config.js

plugins: [
...
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery",
"window.jQuery": "jquery",
"_": "underscore",
"underscore": "underscore"
//'process.env.NODE_ENV': '"development"'
}),

]

tsconfig.json

{
"compilerOptions": {


"target": "es5",
"module": "commonjs",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false,
"suppressImplicitAnyIndexErrors": true,
"declaration": false
},
"exclude": [
"node_modules",
"typings/main",
"typings/main.d.ts"
]
}

https://webpack.github.io/docs/list-of-plugins.html#provideplugin

根据我的经验, typescript 不知道哪些变量将被注入(inject)到模块中,因此构建没有完成。

这是构建的输出

ERROR in ./src/file1.component.ts
(77,9): error TS2304: Cannot find name '$'.

ERROR in ./src/file2.component.ts
(78,13): error TS2304: Cannot find name '$'.

ERROR in ./src/file3.ts
(155,15): error TS2304: Cannot find name 'jQuery'.

ERROR in ./src/file4.ts
(108,9): error TS2304: Cannot find name '$'.

最佳答案

我对 ahz 的回答并不完全满意,因为我不喜欢全局安装类型或将 jQuery 声明为 any 并失去所有类型检查。

对我有用的解决方案是创建具有以下内容的 global.d.ts:

import * as _jQuery from 'jquery';

declare global {
const jQuery: typeof _jQuery;
const $: typeof _jQuery;
}

之后 tsc 就通过了,没有任何警告,比如 Cannot find name '$'.

找到 here .

关于typescript - 如何防止 TypeScript 中断基于 Webpack 的 ProvidePlugin 上声明的未解析变量的 Webpack 构建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37974003/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com