提问者:小点点

无法重新声明块范围的变量“ng devmode”


我的应用程序在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,这个模块还是给了我同样的问题。


共3个答案

匿名用户

我遇到了同样的错误,尽管我认为它是由对位于不同项目中的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”,这是主应用程序的角度版本,用于包括库在内的所有事件