При обновлении AngularJS до Angular AppModule был загружен, но он не объявляет ошибку "@NgModule.bootstrap"

В настоящее время я экспериментирую с обновлением приложения AngularJS до Angular. Следуйте инструкциям на Angular.io. Есть несколько различий между этим проектом и моим. Я использую RequireJS, Gulp и Webpack.

Мой index.html запрашивает requireJS/main.js, main.js запускается

Первый шаг, который я пытаюсь получить, - это запустить гибридное приложение с помощью NgUpgrade.

То, что я до сих пор пробовал в поиске в Google, - это настроить tsconfig, перейти на другую версию zone.js, переконфигурировать в порядке загрузки.

Ошибка, которую я не могу устранить или найти какие-либо решения в Интернете:

Ошибка: Uncaught (в обещании): Ошибка: модуль 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"
    ]
  }

Вот мой 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',
    '@angular/upgrade/static':'upgrade/upgrade-static.umd',
    '@angular/platform-browser-dynamic':'platform-browser-dynamic.umd',
    '@angular/platform-browser':'platform-browser.umd'
  },
  shim: {
    'angular': {'exports': 'angular'}
  },
  priority: [
    'angular'
  ],
  packages: [
  ],
  deps: ['app']
});

Вот мой app.js

"use strict";
var $ = window.$;
define(["angular"], function(angular) { 

  require([

    "jquery",
    "angular-aria",
    "wa-angular-module",
    "ui.router.components",

    "compiler.umd",
    "core.umd",
    "platform-browser.umd",
    "platform-browser-dynamic.umd",
    "upgrade.umd",
    "upgrade-static.umd",
    "reflect-metadata",
    "app.module"

  ], function() {
    require(["angular"], function(angular) {

      var app = angular
        .module(
          "wa-module", [
          "ngRoute",
          "ngAria",
          "ngMessages",
          "ui.router",
          "ui.router.components",
          "ui.bootstrap",
          "matchmedia-ng",
        ])

и, наконец, app.module.ts

import { NgModule } from "@angular/core";
import { BrowserModule } from "@angular/platform-browser";
import { UpgradeModule } from "@angular/upgrade/static";
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';

@NgModule({
  imports: [BrowserModule, UpgradeModule]
})
export class AppModule {
  constructor(private upgrade: UpgradeModule) {}

  ngDoBootStrap() {
    console.log("ngDoBootStrap running");
    this.upgrade.bootstrap(document.body, ["wa"]);
  }
}

platformBrowserDynamic().bootstrapModule(AppModule);

Пожалуйста, дайте мне знать, какая дополнительная информация вам может понадобиться.

Заранее спасибо.

Решение: ngDoBootstrap() - это правильный способ написания слов. Я написал это как ngDoBootStrap(), и он не может разрешить.

моя вина.

1 ответ

(Публикация впервые, извините, она недостаточно тщательна или не отформатирована)

Не уверен, что это относится к версии Angular на момент публикации исходного сообщения, но в Angular 9/10 это должно работать, если вы включите список начальной загрузки в app.module.ts.

    @NgModule({
      declarations: [AppComponent],
      imports: [BrowserModule, UpgradeModule],
      bootstrap: [AppComponent]
    })

Замените AppComponent соответствующим всеобъемлющим компонентом для вашего приложения.

Вы должны изменить код в файле main.ts Заменить

platformBrowserDynamic().bootstrapModule(AppModule);

с

const platform = platformBrowserDynamic();
platform.bootstrapModule(AppModule);

это может помочь решить вашу проблему.

Другие вопросы по тегам