Компилятор ng не увидит node_module (ошибка «Не удается найти имя модуля») - PullRequest
0 голосов
/ 09 июля 2019

Ошибка:

src / app / app.component.ts: 4: 12 - ошибка TS2591: Не удается найти имя «модуль».Вам нужно установить определения типа для узла?Попробуйте npm i @types/node и затем добавьте node в поле типов в вашем файле tsconfig.

4 moduleId: module.id,

Когда я пытаюсь запустить "ng build" вДля того, чтобы скомпилировать мои угловые файлы, я получаю сообщение об ошибке для каждого случая использования «модуля» var.Я уверен, что модуль есть, я могу видеть его в папке node_modules, а также я могу нажать Ctrl + клик по нему, и файл с модулем var откроется.

Я попытался удалить весь каталог node_modules и установить заново.

Я оставил свой tsconfig.json нетронутым, так как пока только учусь, но вот он:

{
  "compileOnSave": false,
  "compilerOptions": {
    "baseUrl": "./",
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "downlevelIteration": true,
    "experimentalDecorators": true,
    "module": "esnext",
    "moduleResolution": "node",
    "importHelpers": true,
    "target": "es2015",
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2018",
      "dom"
    ]
  },
  "angularCompilerOptions": {
    "fullTemplateTypeCheck": true,
    "strictInjectionParameters": true
  }
}

вот пример использования в компоненте ts:

import { Component } from '@angular/core';

@Component({
    moduleId: module.id,
    selector: 'app',
    templateUrl: 'app.component.html'
})

export class AppComponent { }

Возможно, это как-то связано со структурой моего проекта, так как я не очень уверен, какую структуру проекта использовать.Я пытаюсь построить приложение весна + угловое, со следующей структурой:

структура

Структура углового приложения должна быть в порядке, так как оно генерируется новой командой ng

Выходной путь в angular.json установлен в «outputPath»: «../public», который должен находиться в каталоге ресурсов.

У вас есть идеи, что может быть не так, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 09 июля 2019

Я исправил это, удалив из tsconfig.app.json следующие вещи:

"compilerOptions": {
  "outDir": "./out-tsc/app",
  "types": []
},

и добавление этого в tsconfig.json в compilerOptions

"types": ["node"]

Похоже, что компилятору нужна эта опция "types": ["node"], чтобы найти модуль, а также кажется, что по умолчанию эта опция переопределяется в tsconfig.app.json ..

Я не буду закрывать этот вопрос несколько дней, если у меня есть хорошее объяснение для меня: -)

// РЕДАКТИРОВАТЬ: есть гораздо лучшее решение для этого, я проверил ответ как правильный.

Спасибо

0 голосов
/ 09 июля 2019

Вы можете удалить свойство модуля в декораторе компонента. Вам больше не нужно писать @Component({ moduleId: module.id }), и вы не должны автоматически добавлять module.id в веб-пакет. Возможно, вы ссылаетесь здесь на старый учебник или код, поэтому module.id все еще присутствует здесь.

См. Этот ответ для более - Angular - Что означает module.id в компоненте?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...