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?
Ответы
Ответ 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, вот что вам нужно сделать:
-
npm install -D @types/node
- Включите
types: ["node"]
в compilerOptions
в вашем файле tsconfig.json
.
Мне было трудно найти инструкции для шага 2.
Ссылка: машинописный номер 9184
Редактировать:
Вы также можете сделать:
- Включите
"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 и имею те же проблемы, но я решил использовать:
затем
npm install -D @types/node --save
в пакете .json У меня есть
"devDependencies": {
"@types/node": "6.0.40",
...
-
в 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"
]
}
Мне пришлось добавлять типы как пустой массив
- проверьте наличие дубликатов, и если 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"
]