标签: ng-upgrade

将 AngularJS 升级到 Angular,AppModule 已启动,但未声明“@NgModule.bootstrap”错误

我目前正在尝试将 AngularJS 应用程序升级到 Angular。一直在关注 Angular.io 上的教程。该项目和我的项目之间有一些差异。我正在使用 RequireJS、Gulp 和 Webpack。

我的index.html要求requireJS/main.js,main.js启动

我尝试开始工作的第一步是使用 NgUpgrade 引导混合应用程序。

到目前为止,我在谷歌搜索中尝试过的是调整 tsconfig,更改为不同版本的 zone.js,重新配置加载的顺序。

我似乎无法解决或在互联网上找到任何解决方案的错误是:

错误:未捕获(承诺中):错误:模块 AppModule 已引导,但它没有声明“@NgModule.bootstrap”组件,也没有声明“ngDoBootstrap”方法。请定义其中之一。

这是我的 tsconfig.json

    {
    "compilerOptions": {
      "module": "amd",
      "moduleResolution": "node",
      "sourceMap": true,
      "declaration":false,
      "emitDecoratorMetadata": true,
      "experimentalDecorators": true,
      "lib": [ "es2017", "dom" ],
      "typeRoots":["node_modules/@types"]
    },
    "include:":["./src/s/**/*"],
    "exclude": [
        "node_modules","sandbox","gulp-tasks","dist","3rdparty",".settings"
    ]
  }
Run Code Online (Sandbox Code Playgroud)

这是我的 main.js,它只是 requirejs 配置:

require.config({
  waitSeconds : 0,
  baseUrl: './s/lib',
  paths: {
    'app': 'app',
    'angular': 'angular',
    'angular-aria': 'angular-aria.min',
    'jquery': 'jquery.min'
    "wa-angular": "wa-angular.min",
    'ui.router.components': 'routeToComponents',

    'reflect-metadata':'Reflect',
    'zone.js':'zone.js/dist/zone',
    'rxjs':'rxjs',    
    '@angular/common':'common.umd',
    '@angular/compiler':'compiler.umd',
    '@angular/core':'core.umd',
    '@angular/upgrade':'upgrade/upgrade.umd', …
Run Code Online (Sandbox Code Playgroud)

javascript requirejs angularjs ng-upgrade angular

5
推荐指数
1
解决办法
7370
查看次数

降级 Angular Directive 并在 AngularJS 模板中使用它

我正在尝试将 AngularJS 指令转换为 Angular。使用ngUpgrade.

我有 AngularJS 指令如下:

angular.directive('countClicks', function($timeout) {
    return {
        restrict: 'A',
        link: function(scope, elem, attrs) {
            scope.clickCount = 0;
            elem.on('click', function() {
                // Code
            });
        }
    };
});
Run Code Online (Sandbox Code Playgroud)

转换为角度:

@Directive({
    selector: '[count-click]'
})

export class CountClickDirective implements AfterViewInit {
    constructor(public elem: ElementRef) { }
    clickCount = 0;

    ngAfterViewInit() {
        this.elem.nativeElement.querySelector('count-click', addEventListener('click', function() { 
            console.log('test directive'); 
        }));
    }
}
Run Code Online (Sandbox Code Playgroud)

ngAfterViewInit单击时不会被调用

将上面迁移的指令降级为 AngularJS,以便它可以在 AngularJS 模板中使用

.directive('countClick', <any>downgradeComponent({
    component: CountClickDirective,
}))
Run Code Online (Sandbox Code Playgroud)

AngularJS 模板:

<span countClick ng-click="test()"></span>
Run Code Online (Sandbox Code Playgroud)

组件.ts: …

angularjs ng-upgrade angular

5
推荐指数
0
解决办法
3519
查看次数

迁移失败:发现不兼容的对等依赖项

我是 Angular 新手,尝试从 9.0.0 升级到 9.1.11,以将我的打字稿升级为3.7.5 to 3.8在我的应用程序中使用国家/地区地图插件。

\n

当我运行命令时ng update @angular/cli@9.1 @angular/core@9.1我得到了

\n
Using package manager: 'npm' Collecting installed dependencies... Found 68 dependencies. Fetching dependency metadata from registry...\n                  Package "yamapng" has an incompatible peer dependency to "@angular/common" (requires "^7.1.0" (extended), would install "9.1.12").\n                  Package "yamapng" has an incompatible peer dependency to "@angular/core" (requires "^7.1.0" (extended), would install "9.1.12").\n                  Package "angular-svg-round-progressbar" has an incompatible peer dependency to "zone.js" (requires "^0.9.0", would install "0.10.3"). \xc3\x97 Migration failed: …
Run Code Online (Sandbox Code Playgroud)

npm typescript ng-upgrade angular9

5
推荐指数
1
解决办法
1万
查看次数

使用量角器进行ng-upgrade

我正在努力将我的AngularJS(1.6)应用程序迁移到Angular(4),现在有一个混合应用程序,用NgUpgrade引导.

然而,这似乎完全破坏了我的量角器测试.

失败:超时等待异步Angular任务在11秒后完成.这可能是因为当前页面不是Angular应用程序.有关详细信息,请参阅常见问题解答:https://github.com/angular/protractor/blob/master/docs/timeouts.md#waiting-for-angular

在等待带定位器的元素时 - Locator:By(css selector,.toggle-summary-button)

混合应用更改

应用程序似乎运行正常,AngularJS和Angular组件都按预期工作.我在引导过程中所做的更改是:

1 ng-app从html标签中删除:

<html lang="en" *ng-app="myapp">

2添加了AppModules(@NgModule)等.

3使用NgUpgrade引导应用程序:

import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';

import { UpgradeModule } from '@angular/upgrade/static';
import { AppModule } from './app.module';

platformBrowserDynamic().bootstrapModule(AppModule).then(platformRef => {
  const upgrade = platformRef.injector.get(UpgradeModule) as UpgradeModule;
  upgrade.bootstrap(document.body, ['myapp'], {strictDi: true});
});
Run Code Online (Sandbox Code Playgroud)

量角器测试

基于上面的错误,问题似乎与Protractor在等待Angular时所做的事情有关.我有一个beforeEach块加载登录页面,填写详细信息并登录.奇怪的是它仍然打开页面并在用户名字段中输入文本,但随后它无法继续下去.

我无法理解为什么这有任何不同,并且没有多少变化的东西似乎有帮助,所以任何指导都是最受欢迎的!

我试过了,没有成功:

  • 将"rootElement:'body'"添加到我的量角器配置文件中
  • 将"ng12Hybrid:true"添加到我的量角器配置文件中 - 我收到一条消息,说它不再需要,因为它会自动检测到.
  • allScriptsTimeout设置从11000增加到60000并且仍然超时.
  • 关闭waitForAngularEnabled设置.这解决了登录字段的问题,但是我的http模拟没有工作,测试失败.

angularjs protractor ng-upgrade angular

4
推荐指数
1
解决办法
812
查看次数

将 angular 4 到 7 http 升级到 httpclient

目前,我正在使用 webpack 将我的 Angular project4 升级到 Angular7。
我卡在了一步

HttpModuleHttp服务切换到HttpClientModuleHttpClient服务。HttpClient简化了默认的人体工程学(您不再需要映射到 json)并且现在支持类型化的返回值和拦截器。

关于这一步我需要更换

  • HttpModule => HttpClientModule
  • Http=> 对于从=>更新,是否有任何脚本可以帮助喜欢或我们需要手动编辑?HttpClient

    HttpHttpClient
    $rxjs-5-to-6-migrate -p src/tsconfig.app.json

ng-upgrade angular-upgrade angular angular7

4
推荐指数
1
解决办法
1790
查看次数

ng upgrade命令无法将cli从v7升级到v8

用于将cli版本从v7项目更新到v8的ng upgrade命令失败。

首先手动尝试升级cli也会失败。

ng update @angular/cli
Run Code Online (Sandbox Code Playgroud)

您的全局Angular CLI版本(8.0.1)大于本地版本(7.3.9)。使用本地Angular CLI版本。

程序包"@angular/compiler-cli"与“ typescript” 具有不兼容的对等依赖性(requires ">=3.1.1 <3.3", would install "3.4.5")。发现不兼容的对等项依赖关系。往上看。

angular-cli ng-upgrade angular angular-cli-v7

4
推荐指数
1
解决办法
2516
查看次数