Возможно это уже было где-то в темах. Но похожего вопроса я не нашел. И вопрос в том, почему Angular не может найти модули и сервисы. Создаю через "нг г", вроде всё должно подтянуться. Но это выдает ошибку или предупреждение.
Сам сервис имеет несколько методов (функций):
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class NameServices{...}
Как импортировать его в компонент:
import {NameServices} from '../../@core/utils/NameServices.service';
Проблемы, которые возникают в консоли:
▲ [WARNING] Import "NameServices" will always be undefined because the file "src/app/@core/utils/NameServices.service.ts" has no exports [import-is-undefined]
src/app/pages/home/home.component.ts:5:9:
5 │ import {NameServices} from '../../@core/utils/NameServi...
╵ ~~~~~~~~~~~~~~~~~~~~~~~
X [ERROR] TS1490: File appears to be binary. [plugin angular-compiler]
src/app/@core/utils/NameServices.service.ts:0:0:
0 │
╵ ^
X [ERROR] TS2306: File '*:/Projects/client/src/app/@core/utils/NameServices.service.ts' is not a module. [plugin angular-compiler]
src/app/pages/home/home.component.ts:7:38:
7 │ ...rvices} from '../../@core/utils/NameServices.service';
Я уже пытался многое изменить. А в tsconfig я прописывал пути вручную, менял версии "модулей" и так далее, что обычно вызывает много проблем.
Возможно, стоит подтянуть зависимости в App.module.ts?
(Вроде бы работает. Но мне надоела эта грязь в консоли.)
PS: tsconfig.json
{
"compileOnSave": false,
"include": ["./src/app/@core/**/*"],
"compilerOptions": {
"outDir": "./dist/out-tsc",
"forceConsistentCasingInFileNames": true,
"strict": true,
"noImplicitOverride": true,
"noPropertyAccessFromIndexSignature": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"skipLibCheck": true,
"esModuleInterop": true,
"sourceMap": true,
"declaration": false,
"experimentalDecorators": true,
"moduleResolution": "node",
"importHelpers": true,
"target": "ES2022",
"module": "ES2022",
"useDefineForClassFields": false,
"lib": [
"ES2022",
"dom"
]
},
"angularCompilerOptions": {
"enableI18nLegacyMessageIdFormat": false,
"strictInjectionParameters": true,
"strictInputAccessModifiers": true,
"strictTemplates": true
}
}
@Shlang, Добавил код из файла. Я использую Windows 10 (64-разрядная версия, 22H2).
@Shlang, используя Node v20.11.





import {
NameServices
} from '../../@core/utils/NameServices.service';
@Component({
selector: 'your-component',
standalone: true,
imports: [
NameServices
],
templateUrl: './your.component.html',
styleUrl: './your.component.scss',
})
export class YourComponent {
constructor(private nameServices: NameServices) {}
}Это не решило ни одной ошибки или предупреждения. Вообще ничего не изменилось, хотя это правильно сделать, следуя документации.
Решение было внезапным и легким. Все дело в конфликте Angular с JSDoc. Комментарии типа @param оказались читабельными для фреймворка.
Ещё заметил, что это зависит от кодировки файла. Например в windows 1252 кириллица выдает такие ошибки. И ошибок в utf-8 с кириллицей нет!
Он делает это для файлов .ts или у вас есть файлы .js в вашем проекте?
@Shlang, нет, в моем проекте только .ts
Не могли бы вы поделиться
tsconfig.json, который выдает ошибки? А какая у вас операционная система?