Angular: есть ли необходимость больше использовать app.server.module.ts?

#javascript #angular

#javascript #angular

Вопрос:

В настоящее время я преобразую старое приложение Angular в новую версию (Angular 10), и в папке приложения есть файл с именем app.server.module.ts . Однако, насколько я вижу, это, похоже, связано со старыми версиями (возможно, AngularJS), но я не уверен, как удалить этот файл (какие изменения я должен внести в app.module.ts app.routing.module.ts , и т.д. Вот этот файл ниже:

app.server.module.ts

 import { NgModule } from '@angular/core';
import { ServerModule } from '@angular/platform-server';
import { ModuleMapLoaderModule } from '@nguniversal/module-map-ngfactory-loader';
import { AppComponent } from './app.component';
import { AppModule } from './app.module';

@NgModule({
    imports: [AppModule, ServerModule, ModuleMapLoaderModule],
    bootstrap: [AppComponent]
})
export class AppServerModule { }
  

Будет ли проблемой полное удаление?

Обновление: вот единственный файл, использующий этот модуль во всем интерфейсном проекте:

tsconfig.server.json.ts:

 {
  "extends": "../tsconfig.json",
  "compilerOptions": {
    "target": "es2016"
  },
  "angularCompilerOptions": {
    "entryModule": "app/app.server.module#AppServerModule"
  }
,
  "files": [
    "main.ts"
  ],
  "include": [
    "src/**/*.d.ts"
  ]
}
  

Комментарии:

1. Я предлагаю переименовать AppServerModule во что-то другое и посмотреть, не свалится ли это вам на голову каким-то образом. Кроме этого, пожалуйста, обратите внимание, что предоставленный код не дает потенциальному ответчику никакой подсказки относительно того, где может быть проблема. Расширьте свой вопрос с более подробной информацией по мере тестирования.

2. @MikeS. Спасибо большое за ваш ответ. Я думаю об этом, но, как вы догадываетесь, некоторые проблемы могут быть не видны непосредственно после запуска проекта. По этой причине я считаю хорошей идеей узнать использование этого файла перед изменением. На самом деле нет необходимости предоставлять дополнительную информацию, потому что это файл, основанный на структуре (возможно, созданный автоматически в предыдущих версиях).

3. @MikeS. Я также добавил единственный file ( tsconfig.server.json.ts ), который использует этот модуль.

Ответ №1:

Это связано не с AngularJS, а с Angular.

Если вы хотите удалить этот файл (не зная всего контекста вашего приложения), вам нужно будет, по крайней мере, внести два изменения :

Добавьте bootstrap метаданные в другой модуль (AppModule ?) поскольку он определяет, что корневой компонент вашего приложения загружается с вашего index.html

 bootstrap: [AppComponent]
  

Проверьте свой main.ts файл, поскольку это может быть модуль, используемый для начальной загрузки вашего приложения :

 platformBrowserDynamic()
  .bootstrapModule(AppServerModule)
  .catch((err) => console.error(err));
  

При удалении этого модуля в пользу вашего AppModule вам также необходимо будет добавить imports ServerModule и ModuleMapLoaderModule в его medatdata .

Комментарии:

1. точно: измените angularCompilerOptions entryModule (но вам все равно нужно изменить bootstrap часть из моего ответа)

2. Да для 1 и 2. Итак, в этой ситуации просто измените tsconfig.server.json.ts .

3. на самом деле это зависит от цели приложения: этот файл используется для предоставления приложения, отображаемого на стороне сервера (известного как SSR). Если вы не планируете использовать этот метод для предоставления предварительно отрисованных страниц вашего приложения, он вам не нужен (вы можете обратиться к ng-universal для получения дополнительной информации)

4. если вы его не используете, вам просто нужно удалить файл tsconfig.server.json.ts и ваш AppServerМодуль (и @angular/platform-server amp; @nguniversal/module-map-ngfactory-loader packages из вашего package.json). Больше никаких изменений в вашем реальном коде

5. Кажется, все в порядке, как на angular.io/guide/universal .