Подтвердить что ты не робот

TypeScript ошибка в Angular2 код: не удается найти имя 'module'

Я определил следующий компонент Angular2:

import {Component} from 'angular2/core';

@Component({
  selector: 'my-app',
  moduleId: module.id,
  templateUrl: './app.component.html'
})
export class AppComponent {
}

Когда я пытаюсь скомпилировать это, я получаю следующую ошибку в строке 5:

src/app/app.component.ts(5,13): error TS2304: Cannot find name 'module'.

Я считаю, что module.id ссылается на переменную CommonJS module (см. здесь). Я указал систему модуля CommonJS в tsconfig.json:

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "declaration": false,
    "removeComments": true,
    "noLib": false,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "sourceMap": true,
    "pretty": true,
    "allowUnreachableCode": false,
    "allowUnusedLabels": false,
    "noImplicitAny": true,
    "noImplicitReturns": true,
    "noImplicitUseStrict": false,
    "noFallthroughCasesInSwitch": true
  },
  "exclude": [
    "node_modules",
    "dist",
    "typings/browser.d.ts",
    "typings/browser",
    "src"
  ],
  "compileOnSave": false
}

Как исправить ошибку TypeScript?

4b9b3361

Ответ 1

Обновить

Если вы используете Typescript 2 ^, просто используйте следующую команду:

npm i @types/node --save-dev

(вместо --save-Dev вы можете просто использовать ярлык -D)

или установите его глобально:

npm i @types/node --global

Вы также можете указать typeRoots или types в вашем tsconfig.json, если хотите, но по умолчанию все видимые пакеты "@types" включены в вашу компиляцию.

Старая версия

Вам необходимо установить узел ambientDependencies. Typings.json

"ambientDependencies": {
    "node": "github:DefinitelyTyped/DefinitelyTyped/node/node.d.ts#138ad74b9e8e6c08af7633964962835add4c91e2",

Другой способ может использовать менеджер наборов для глобальной установки файла определения узла:

typings install dt~node --global --save-dev

Тогда ваш файл typings.json будет выглядеть так:

"globalDependencies": {
  "node": "registry:dt/node#6.0.0+20160608110640"
}

Ответ 2

Для тех, кто хочет сделать это с Typescript 2.x и @types, вот что вам нужно сделать:

  1. npm install -D @types/node
  2. Включите types: ["node"] в compilerOptions в вашем файле tsconfig.json.

Мне было трудно найти инструкции для шага 2.

Ссылка: машинописный номер 9184

Редактировать:

Вы также можете сделать:

  1. Включите "typeRoots": [ "node_modules/@types" ] в compilerOptions в вашем файле tsconfig.json. Это вместо свойства types и имеет преимущество автоматического включения любых @types вы устанавливаете с помощью npm.

Например:

{
  "compilerOptions": {
    "typeRoots": [
      "node_modules/@types"
    ]
  }
}

[Второе редактирование] Очевидно, что с последним машинописным typeRoots вам нужны только typeRoots или types если tsconfig.json не находится в корне вашего проекта или ваши типы не хранятся в node_modules/@types.

Ответ 3

Вместо "ambient" попробуйте "global" от Typments 1.0

typings install dt~node --global --save

Ответ 4

Я удаляю эту ошибку при переносе моего проекта @stw50 > /angular2 Quickstart в новый проект, созданный автоматически angular cli.

Кажется, что moduleId: module.id больше не требуется.

Это последний автоматически сгенерированный компонент:

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

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  title = 'app works!';
}

Удаление всех событий разрешило мои ошибки.

Ответ 5

Два ключевых момента:

  • Зарегистрируйте типизацию, запустив typings install dt~node --global --save. Итак, вы получите следующий раздел в typings.json:

    "globalDependencies": {
        "node": "registry:dt/node#6.0.0+20160608110640"
    }
    
  • Добавьте ссылку на новый модуль. Два способа:

    • Непосредственно добавьте ссылку на зависимость в вашем TS

      /// <reference path="../../../typings/globals/node/index.d.ts" />

    • Добавьте typings/index.d.ts в раздел files раздела tsconfig.json

      {
          "files": [
              "typings/index.d.ts"
          ]
      }
      

Подробнее здесь.

Ответ 6

Я использую VS 2015 и имею те же проблемы, но я решил использовать:

  • добавить файл typings.json с веб-сайта angular.io(окончательный выпуск 2.0.0 на данный момент) и запустить:

    typings install // don't forget to install typings globally
    

затем

npm install -D @types/node --save

в пакете .json У меня есть

"devDependencies": {
"@types/node": "6.0.40",
...
  1. в typings.json У меня есть следующая конфигурация

    {
    "compilerOptions": {
        "target": "es5",
        "module":"commonjs",
        "moduleResolution": "node",
        "sourceMap": true,
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "removeComments": true,
        "noImplicitAny": true,
        "suppressImplicitAnyIndexErrors": true,
        "allowSyntheticDefaultImports": true,
        "types": []
    },
    "exclude": [
        "node_modules",
        "app-dist"
    ]
    }
    

Мне пришлось добавлять типы как пустой массив

  1. проверьте наличие дубликатов, и если moduleId: module.id все еще выделен

p.s. для меня лично это странная проблема, потому что, как только вы исключаете типизацию внутри typings.json, вы сразу же выделили "модуль", но если вы впустите его, у вас будет много дубликатов. Не знаю, кто виноват, я, typescript или визуальная студия:)

Ответ 7

Это то, что я сделал для меня на Eclipse (Webclipse)/Windows.

Шаг 1:

Терминал

$ npm install @types/node --global --save

Шаг 2:

tsconfig.json

{
  "compilerOptions": {
    ...,
    "types": ["node"]
  }
}

Кроме того, у меня были следующие зависимости в моем package.json, поэтому я использовал typescript 2.

  "devDependencies": {
    ...
    "typescript": "~2.0.10",
    "@types/node": "^6.0.46",
    ...
  },

Ответ 8

Я установил в проекте, и работал хорошо

npm install @types/node --save-dev

Ответ 9

module.id

не могу найти имя модуля.

Выполните следующие шаги, чтобы решить эту проблему,

Шаг 1: Установите модуль узла с помощью приведенной ниже команды

npm i @types/node --save

Шаг 2: измените файл tsconfig.app.json в src/app

"types": [
    "node"
]