问题
如何阻止 VS Code 将declare var jQuery:any;
显示为错误?
更多信息
我做了什么
快速搜索后,我发现了一个建议this,这表明jQuery
变量已在同一代码块的其他位置定义。所以我删除了这个引用。 VS Code 停止投诉,但控制台显示以下错误,我的应用无法编译。
src / app / app.config.ts(34,25)中的错误:错误TS2304:找不到名称' jQuery'。 src / app / pages / pages.component.ts(31,27):错误TS2304:找不到名称' jQuery'。
所以我重新添加我刚删除的行,我的应用程序符合,但我在浏览器中得到以下错误(在开发工具控制台中)
ERROR Error: Uncaught (in promise): TypeError: __webpack_require__.e is not a function
TypeError: __webpack_require__.e is not a function
at webpackAsyncContext (eval at ./src/$$_lazy_route_resource lazy recursive (main.bundle.js:13), <anonymous>:11:29)
at SystemJsNgModuleLoader.loadAndCompile (core.js:6554)
at SystemJsNgModuleLoader.load (core.js:6538)
at RouterConfigLoader.loadModuleFactory (router.js:4543)
at RouterConfigLoader.load (router.js:4523)
at MergeMapSubscriber.eval [as project] (router.js:2015)
at MergeMapSubscriber._tryNext (mergeMap.js:128)
at MergeMapSubscriber._next (mergeMap.js:118)
at MergeMapSubscriber.Subscriber.next (Subscriber.js:92)
at ScalarObservable._subscribe (ScalarObservable.js:51)
at webpackAsyncContext (eval at ./src/$$_lazy_route_resource lazy recursive (main.bundle.js:13), <anonymous>:11:29)
at SystemJsNgModuleLoader.loadAndCompile (core.js:6554)
at SystemJsNgModuleLoader.load (core.js:6538)
at RouterConfigLoader.loadModuleFactory (router.js:4543)
at RouterConfigLoader.load (router.js:4523)
at MergeMapSubscriber.eval [as project] (router.js:2015)
at MergeMapSubscriber._tryNext (mergeMap.js:128)
at MergeMapSubscriber._next (mergeMap.js:118)
at MergeMapSubscriber.Subscriber.next (Subscriber.js:92)
at ScalarObservable._subscribe (ScalarObservable.js:51)
at resolvePromise (zone.js:809)
at resolvePromise (zone.js:775)
at eval (zone.js:858)
at ZoneDelegate.invokeTask (zone.js:421)
at Object.onInvokeTask (core.js:4736)
at ZoneDelegate.invokeTask (zone.js:420)
at Zone.runTask (zone.js:188)
at drainMicroTaskQueue (zone.js:595)
at <anonymous>
所以我终止了应用程序并重新启动它。现在应用程序运行时没有错误,但 VS Code 再次显示同样的问题。
tsconfig.json
{
"compileOnSave": false,
"compilerOptions": {
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es5",
"typeRoots": [
"node_modules/@types"
],
"lib": [
"es2017",
"dom"
]
}
}
答案 0 :(得分:1)
我认为你有两个问题。
第一个是声明jQuery(你已经在使用 @ types / jquery 了,对吧?)。 VS Code可能已经正确宣布了。所以删除它。
第二个问题是你的某些组件在运行webpack时找不到jQuery,对吗?
我建议你在 webpack 配置中使用ProvidePlugin:
//=============================================
// Provide PLUGIN - making things available
//=============================================
const provideVars = new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery",
'window.jQuery': 'jquery'
});
module.exports = {
...
plugins: [
provideVars
],
...
};
答案 1 :(得分:0)
可能会在以下步骤下解决您的问题。 让我知道你的意见。
1。)从npm
安装jquery类型和jquerynpm install jquery
npm install @types/jquery
2。)将jquery添加到.angular-cli.json
"scripts": [
"../node_modules/jquery/dist/jquery.min.js",
],
3。)在pages.component.ts文件中声明。
declare let $: any;
declare let jQuery: any;