我的应用程序在Angular 5。下面是package.json的外观
{
"name": "myapp",
"version": "0.0.0",
"license": "MIT",
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build --prod",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e"
},
"private": true,
"dependencies": {
"@angular/animations": "^5.2.0",
"@angular/common": "^5.2.0",
"@angular/compiler": "^5.2.0",
"@angular/core": "^5.2.0",
"@angular/forms": "^5.2.0",
"@angular/http": "^5.2.0",
"@angular/platform-browser": "^5.2.0",
"@angular/platform-browser-dynamic": "^5.2.0",
"@angular/router": "^5.2.0",
"@types/file-saver": "0.0.1",
"angular-2-dropdown-multiselect": "^1.6.0",
"angular2-csv": "^0.2.5",
"bootstrap": "^3.3.7",
"core-js": "^2.4.1",
"file-saver": "^1.3.3",
"ngx-bootstrap": "^1.9.3",
"ngx-clipboard": "^8.1.0",
"ngx-loading": "^1.0.14",
"ngx-pagination": "^3.0.0",
"ngx-toastr": "^6.4.0",
"rxjs": "^5.5.6",
"zone.js": "^0.8.19"
},
"devDependencies": {
"@angular/cli": "~1.7.0",
"@angular/compiler-cli": "^5.2.0",
"@angular/language-service": "^5.2.0",
"@types/jasmine": "~2.8.3",
"@types/jasminewd2": "~2.0.2",
"@types/node": "~6.0.60",
"codelyzer": "^4.0.1",
"jasmine-core": "~2.8.0",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~2.0.0",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "^1.2.1",
"karma-jasmine": "~1.1.0",
"karma-jasmine-html-reporter": "^0.2.2",
"protractor": "~5.1.2",
"ts-node": "~4.1.0",
"tslint": "~5.9.1",
"typescript": "~2.5.3"
}
}
到目前为止一切都很好。现在我需要在我的应用程序中使用datepicker。所以我安装了Angular-IO-DatePicker
npm install angular-io-datepicker --save
现在,当我执行一个ng服务时(在app.module.ts中包含OverlayModule和DatePickerModule之后),它会给我以下错误
ERROR in node_modules/@angular/core/src/render3/ng_dev_mode.d.ts(9,11): error TS2451: Cannot redeclare block-scoped variable 'ngDevMode'.
node_modules/angular-io-overlay/node_modules/@angular/core/src/render3/ng_dev_mode.d.ts(9,11): error TS2451: Cannot redeclare block-scoped variable 'ngDevMode'.
有什么可能的错误和如何修复它的建议吗?我早先在Angular 4中成功地使用了这个模块。然后我升级到Angular 5,它就坏了。现在即使我回滚到angular 4,这个模块还是给了我同样的问题。
我遇到了同样的错误,尽管我认为它是由对位于不同项目中的Typescript文件的引用引起的。我按照这里的建议解决了这个问题:github issues 24165。具体地说,我将以下内容添加到项目根目录中tsconfig.json
文件中的compileroptions
中:
"paths": {
"@angular/*": ["node_modules/@angular/*"]
}
注意:如果基本路径不为空,可能需要使用../node_modules
。
对于tsConfig中的角度6
如果baseUrl是src,则按如下方式设置路径。
"paths": {
"@angular/*": [
"../node_modules/@angular/*"
]`enter code here`
},
如果baseUrl为空,则设置没有根的路径对我有效
"paths": {
"@angular/*": [
"node_modules/@angular/*"
]
},
我可以看到正确的答案已经给出了,但我认为需要更好的解释是什么发生了与答案。
在tsconfig.json中
"paths": {
"@angular/*": ["node_modules/@angular/*"]
}
这告诉编译器选择“node_modules/@angular”,这是主应用程序的角度版本,用于包括库在内的所有事件