每当我尝试启动Web应用程序时,都会出现此Type错误。不知道为什么。
更新一些软件包后,我开始获取它。我无法弄清楚是哪个问题,或者是为什么错误指向的代码出错,因为它是我在Angular 8的依赖项中的代码。我不太确定该错误告诉我什么。 我试图更新所有依赖项。我查看了几乎所有类似的问题解决方案,但它们没有起作用。我不知道是编译器错误,打字稿还是依赖项错误。
错误
{
"name": "nh",
"version": "0.0.0",
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e",
"heroku-postbuild": "ng build --prod"
},
"keywords": [
"heroku"
],
"private": true,
"dependencies": {
"@agm/core": "^1.0.0-beta.6",
"@angular-devkit/build-angular": "^0.13.0",
"@angular/animations": "~8.1.2",
"@angular/common": "~8.1.2",
"@angular/core": "~8.1.2",
"@angular/forms": "~8.1.2",
"@angular/platform-browser": "~8.1.2",
"@angular/platform-browser-dynamic": "~8.1.2",
"@angular/router": "~8.1.2",
"@types/googlemaps": "^3.37.0",
"core-js": "^2.5.4",
"font-awesome": "^4.7.0",
"hammerjs": "^2.0.8",
"ngx-gallery": "^5.10.0",
"rxjs": "~6.5.2",
"tslib": "^1.9.0",
"zone.js": "^0.9.1"
},
"devDependencies": {
"@angular/cli": "^7.3.9",
"@angular/compiler": "^7.2.15",
"@angular/compiler-cli": "^8.1.2",
"@angular/language-service": "~8.1.2",
"@types/jasmine": "~2.8.8",
"@types/jasminewd2": "~2.0.3",
"@types/node": "~8.9.4",
"codelyzer": "~4.5.0",
"enhanced-resolve": "^3.3.0",
"jasmine-core": "~2.99.1",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~4.0.0",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "~2.0.1",
"karma-jasmine": "~1.1.2",
"karma-jasmine-html-reporter": "^0.2.2",
"protractor": "~5.4.0",
"ts-node": "~7.0.0",
"tslint": "~5.11.0",
"typescript": "^3.4.5"
},
"engines": {
"node": "10.16.0",
"npm": "6.9.0"
}
}
PACKAGE.JSON
%c
我希望该应用能够编译,构建和启动。每当我尝试ng服务,ng测试或ng构建时,都会出现此错误。
答案 0 :(得分:12)
在将CLI全局更新到版本8并通过在项目目录中运行以下命令将项目中的angular升级到最新版本后,我的angular@7
项目遇到了同样的问题:
ng update @angular/cli @angular/core
此外,这里提到的升级时还有其他注意事项: https://update.angular.io/#7.0:8.0
答案 1 :(得分:9)
使用public class SplashActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
final Uri uri = intent.getData();
Intent intentForActivity = new Intent(this, MainActivity.class);
if (uri != null)
intentForActivity.putExtra("URI", uri.toString());
intentForActivity.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intentForActivity);
this.finish();
}
}
运行测试时,我在Angular应用程序中遇到了相同的错误。
就我而言,问题的原因是循环依赖项。
我有两个类属于某个ng test
的一部分,但是其中一个使用相同的索引导入了另一个。之所以造成循环依赖,是因为index.ts
被多次导入。
一旦删除了循环依赖关系,一切都将正常工作。
答案 2 :(得分:5)
使用标志allow-dirty
可以绕过回购检查。
ng update @angular/cli @angular/core --allow-dirty
答案 3 :(得分:1)
对离子用户:在我的情况下,问题是当前的角度/离子cli版本和角度/离子应用程序版本之间不兼容。
要解决的步骤:
1)使用ionic版本3创建一个新项目,然后比较文件packages.json。
ionic start Ionic3Project blank --type=ionic-angular
2)在Ionic3Project文件夹中,构建android
ionic cordova build android --prod
3)打开主项目的packages.json并更改以下版本的依赖项:
"@angular/*"
"@ionic-native/*"
"rxjs"
Also, replace the "scripts" part.
4)删除您的node_modules文件夹。
5)删除平台android文件夹(整个平台文件夹或仅android文件夹)。
6)运行npm install
7)添加平台android
ionic cordova platform add android
8)再次构建您的应用
ionic cordova build android --prod
按照这些步骤操作后,我可以再次构建我的应用程序。
不好。:在这些步骤之间,您可能会遇到一些与插件有关的问题。在这种情况下,您可能需要重新安装插件。做到这一点,并牢记这些步骤。重新安装插件后,尝试删除并重新添加android。
答案 4 :(得分:0)
在我的Ionic应用程序中,我使用npm i @angular/compiler-cli@5.2.11
将Angular CLI从8.x.x降级到5.2.11,并且可以正常工作
答案 5 :(得分:0)
我遇到了这个问题,阅读了Francesco Borzi的回答,发现进口顺序可能很重要:
我使用index.ts 在index.ts中,我导入任何本地“ ./*”类,然后立即导出它们 进口顺序为
import { Class2 } from './class2';
import { Class1 } from './class1';
在Class2中,我会有一个
import Class1 from '.'
export Class2 extends Class1
它试图首先编译Class2,而Class2引用Class1。我在index.ts中反转了导入,现在可以使用
答案 6 :(得分:0)
这是我在Angular 9上发生的,所以我将这个答案留给那些正在寻找该版本修复程序的人...我通过删除node_modules文件夹并重新安装来修复了它。这确保了ngcc
被迫重新编译依赖关系。只需确保您的postinstall
NPM脚本如下:
"postinstall": "ngcc"
答案 7 :(得分:0)
我有同样的问题 固定方式如下:
npm i @angular/compiler-cli@~8.0.0