web-dev-qa-db-ja.com

Angular2コードのTypeScriptエラー:名前 '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変数を参照していると思います( here を参照)。 tsconfig.jsonでCommonJSモジュールシステムを指定しました。

{
  "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エラーを修正するにはどうすればよいですか?

60
Naresh

更新

TypeScript 2 ^を使用する場合は、次のコマンドを使用します。

npm i @types/node --save-dev

--save-devの代わりに、ショートカット-Dを使用できます)

またはグローバルにインストールします:

npm i @types/node --global

必要に応じて、tsconfig.jsonでtypeRootsまたはtypesを指定することもできますが、デフォルトでは、表示されるすべての「@types」パッケージがコンパイルに含まれます

旧バージョン

ノードambientDependenciesをインストールする必要があります。 Typings.json

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

別の方法では、 typings managerを使用して、ノード定義ファイルをグローバルにインストールできます。

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

次に、typings.jsonファイルは次のようになります。

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

TypeScript 2.xおよび@typesを使用してこれを実行する場合は、次の操作が必要です。

  1. npm install -D @types/node
  2. types: ["node"]ファイルのcompilerOptionsの下にtsconfig.jsonを含めます。

ステップ2の手順を見つけるのに苦労しました。

参照: TypeScript issue 9184

編集:

次のこともできます。

  1. "typeRoots": [ "node_modules/@types" ]ファイルのcompilerOptionsの下にtsconfig.jsonを含めます。これはtypesプロパティの代わりであり、npmでインストールする@typesを自動的に含める利点があります。

例:

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

[2番目の編集]明らかに 、最新のTypeScriptでは、tsconfig.jsonがルートにない場合はtypeRootsまたはtypesのみが必要ですプロジェクトまたはタイプはnode_modules/@typesに保存されていません。

44
Isaac

「アンビエント」の代わりに、タイピングス1.0による「グローバル」を試してください

typings install dt~node --global --save
11
asdf_enel_hak

@ angular/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!';
}

すべての発生を削除すると、エラーが解決しました。

10
TDP

2つの重要なポイント:

  1. typings install dt~node --global --saveを実行してタイピングを登録します。したがって、typings.jsonで次のセクションを取得できます。

    "globalDependencies": {
        "node": "registry:dt/node#6.0.0+20160608110640"
    }
    
  2. 新しいモジュールへの参照を追加します。二通り:

    • TSの依存関係への参照を直接追加します

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

    • typings/index.d.tsfilesセクションにtsconfig.jsonを追加します

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

詳しくは こちら をご覧ください。

3
Alex Klaus

私はVS 2015を使用していますが、同じ問題がありましたが、以下を使用して解決しました:

  1. angular.ioウェブサイトからtypings.jsonファイルを追加し(現時点では2.0.0最終)、実行します:

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

それから

npm install -D @types/node --save

私が持っているpackage.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がまだ強調表示されている場合

追伸私にとって個人的には奇妙な問題です。なぜなら、typings.json内のタイピングを除外するとすぐに「モジュール」が強調表示されますが、それを入れると重複がたくさんあるからです。誰が責任があるのか​​わからない、私、TypeScriptまたはビジュアルスタジオ:)

1
Leon

私はプロジェクトにインストールし、うまく働いた

npm install @types/node --save
0
osmarpetry

module.id

名前モジュールが見つかりません。

この問題を解決するには、次の手順に従ってください。

ステップ1:以下のコマンドを使用してノードモジュールをインストールする

npm i @types/node --save

ステップ2:tsconfig.app.jsonの下のファイルsrc/appを変更する

"types": [
    "node"
]
0
Sathish Kumar

これは私が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",
    ...
  },
0
Kin Cheung