Как я могу исправить, где ссылки на шаблоны находятся в Angular 9?

Недавно я обновил Angular с 8 до 9, и как только я это сделал, у меня начались ошибки компиляции, и я не могу снова заставить приложение работать. Кажется, что модули, используемые в моих шаблонах, указывают не на то место (удвоенные конечные точки).

Вот пример того, что он выводит.

ERROR in ./src/app/components/prod/settings-dashboard/font-page/font-page.component.ts
Module not found: Error: Can't resolve 
'../../../../../../node_modules/@angular/common/common' in 
'/Users/person/Projects/appilicious/src/app/components/prod/settings-dashboard/font-page'

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

Это в основном для общих, а также для форм. Я предполагаю, что есть установочный файл, который я не меняю, но мне не повезло найти, где он будет жить.

Мой package.json использует angular в ~ 9.0.6

У меня есть свежий проект с angular 9, и он работает безупречно...


person dungeonmonster    schedule 16.03.2020    source источник


Ответы (3)


Команда ng update, должно быть, испортила некоторые из ваших операций импорта.

Проверьте все import { ... } from '/path/to/module'; и убедитесь, что path/to/module правильно.

Из вашего сообщения об ошибке кажется, что ссылка на модуль @angular/common каким-то образом была заменена на @angular/common/common, что неверно и приводит к тому, что компилятор не находит указанный модуль.

Итак, это очень поверхностная ошибка, которую вы сможете быстро исправить.

person Qortex    schedule 16.03.2020
comment
Это не сработало, к сожалению. Я посмотрел под node_modules/@angular/common, и похоже, что у него нет другой папки с именем common. Я нашел решение, которое я опубликую - Спасибо за помощь! - person dungeonmonster; 16.03.2020
comment
Я имел в виду, проверьте операторы import в вашем коде. Должно быть, они ошибаются. - person Qortex; 16.03.2020

Убедитесь, что все ваши пути к компонентам и модулям верны.

Для общего модуля попробуйте удалить файлы node_modules и package-lock.json.

Затем запустите npm cache clean -f и npm i (это псевдоним для npm install).

person Tombery    schedule 16.03.2020
comment
К сожалению, не решил, но спасибо за рекомендацию по npm cache clean. - person dungeonmonster; 16.03.2020

Я сделал ошибку, создав файл типа index.ts для хранения всех моих модулей. Не совсем уверен, что это плохая практика, хотя это может быть и не нужно. Итак, в основном:

modules.ts

export {CommonModule} from '@angular/common'

И имел SharedModule, вызывающий его

shared.module.ts

import {CommonModule} from '../modules'

@NgModule({
    imports: [CommonModule],
    exports: [CommonModule]
})
export class SharedModule {}

Когда я использовал только прямую ссылку, это сработало. Не знаю, зачем это делать, но это вызывает некоторую путаницу. Странно то, что это было сделано только для FormsModule и CommonModule.

person dungeonmonster    schedule 16.03.2020