angular - 在角度 CLI 中出现构建错误:无法重新声明块范围变量“ngDevMode”
问题描述
我在我的角度应用程序中遇到奇怪的构建错误。谁能指出我做错了什么。我正在尝试使用 ADAL.js 角度包集成 Azure AD 身份验证。我正在使用adal-angular5
这个。
cli命令:ng serve
node_modules/@angular/core/src/render3/ng_dev_mode.d.ts(9,11) 中的错误:错误 TS2451:无法重新声明块范围变量“ngDevMode”。node_modules/adal-angular5/node_modules/@angular/core/src/render3/ng_dev_mode.d.ts(9,11):错误 TS2451:无法重新声明块范围变量“ngDevMode”。
当与ng build --prod
@angular\common\http\http.ts(62,2) 中的错误:在 'HttpClient' 模板编译期间出错 装饰器不支持函数调用,但在 'Injectable' 中调用了 'ɵmakeDecorator' 'Injectable' 调用 'ɵmakeDecorator' . node_modules/@angular/core/src/render3/ng_dev_mode.d.ts(9,11):错误 TS2451:无法重新声明块范围变量“ngDevMode”。node_modules/adal-angular5/node_modules/@angular/core/src/render3/ng_dev_mode.d.ts(9,11):错误 TS2451:无法重新声明块范围变量“ngDevMode”。
这是我的角度版本详细信息
Angular CLI: 6.1.4
Node: 8.11.4
OS: win32 x64
Angular: 6.1.3
Package Version
-----------------------------------------------------------
@angular-devkit/architect 0.7.4
@angular-devkit/build-angular 0.7.4
@angular-devkit/build-optimizer 0.7.4
@angular-devkit/build-webpack 0.7.4
@angular-devkit/core 0.7.4
@angular-devkit/schematics 0.7.4
@angular/cli 6.1.4
@ngtools/webpack 6.1.4
@schematics/angular 0.7.4
@schematics/update 0.7.4
rxjs 6.2.2
typescript 2.9.2
webpack 4.9.2
我的 app.moudle.ts 供参考:
import { AuthService } from './services/auth.service';
import { AuthGuardService } from './services/auth-gurad.service';
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { AppComponent } from './app.component';
import { ProtectedComponent } from './protected/protected.component';
import { AuthCallbackComponent } from './auth-callback/auth-
callback.component';
import { Adal5Service, Adal5HTTPService } from 'adal-angular5';
import { HttpClient } from '@angular/common/http';
const routes: Routes = [
{
path:'',
children: []
},
{
path:'protected',
component:ProtectedComponent,
canActivate: [AuthGuardService]
},
{
path:'auth-callback',
component:AuthCallbackComponent
}
];
@NgModule({
declarations: [
AppComponent,
ProtectedComponent,
AuthCallbackComponent
],
imports: [
BrowserModule,
RouterModule.forRoot(routes)
],
exports: [RouterModule],
providers: [AuthGuardService, AuthService, Adal5Service,{
provide:Adal5HTTPService, useFactory:Adal5HTTPService.factory, deps:
[HttpClient, Adal5Service] } ],
bootstrap: [AppComponent]
})
export class AppModule { }
这是我的 tsconfig.json
{
"compileOnSave": false,
"compilerOptions": {
"baseUrl": "./",
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"module": "es2015",
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es5",
"typeRoots": [
"node_modules/@types"
],
"lib": [
"es2017",
"dom"
]
}
}
如果需要更多参考,请告诉我。
解决方案
看起来您正在尝试将 Angular 6 用于您的项目,但adal-angular5
依赖于 Angular 5。因此,Angular 5 和 Angular 6 都已安装,并且它们的类型定义存在冲突;您也可能在运行时遇到问题。将您的项目切换到 Angular 5 或尝试adal-angular4
,它应该支持 Angular 4 和更新版本。
推荐阅读
- asp.net-core - 如何在没有 ASP.NET 身份的情况下使用授权
- java - 如何修复“在类路径资源中定义名称为 'entityManagerFactory' 的 bean 创建错误”
- c# - 如何知道是什么导致我的操作遇到多个线程?
- javascript - React-Leaflet:无效的 LatLng 对象
- java - 无法在 Grails 2.4.4 项目中实例化 OpenCV-4.0.1 CascadeClassifier
- sql - 如何使用 SQL 从汇总结果中计算每日平均值?
- javascript - TypeScript transpile - for 循环与数组切片
- linux - 在目录中迭代以备份 linux 中的 sqlite 表
- sql-server - RANGE 窗口框架的 ORDER BY 列表的总大小为 8010 字节。支持的最大大小为 900 字节
- java - 在方向图中从 JAVA 添加具有属性的类顶点以及另一个类顶点的列表等