ファイル「app / hero.ts」は、コンソールのモジュールエラーではありません。angular2のディレクトリ構造にインターフェイスファイルを格納する場所はどこですか。


144

私はangular2このアドレスでチュートリアルを行っています:https : //angular.io/docs/ts/latest/tutorial/toh-pt3.htmlheroインターフェースをappフォルダーの下の単一のファイルに入れました。コンソールで、このエラーが発生しました:

app/app.component.ts(2,20): error TS2306: File 'app/hero.ts' is not a module.
[0] app/hero-detail.component.ts(2,20): error TS2306: File 'app/hero.ts' is not a module.

インターフェイスファイルをヒーローフォルダーに配置すると、エラーが消えます。これはドキュメントに記載されていませんインポートの何が問題になっていますか?

(コンポーネントファイルのbeguiningで)私のimportディレクティブの両方でapp.components.tshero-detail.component.ts

import {Component} from 'angular2/core';

import {Hero} from './hero';

インポートディレクティブを次のように置き換える必要import {Hero} from './'; がありますまたは単にコードをヒーローフォルダーに配置しますか?

回答:


422

コード(VSコードまたはSublime)を記述しているエディターを再起動してみてください。コンパイルして再度実行します。私は同じことをしました、そしてそれはうまくいきました。

これは、エディターの外部に新しいクラスを追加するか、角度を付けたcli 'ng serve'を実行し続けると発生します。実際には、エディタまたは「ng serve」コマンドは、新しく作成されたファイルを見つけることができない場合があります。


4
再起動は機能しますが、誰もが根本的な原因を知っていますか?
ガディゲシュ2016

また、Angular 4とVS Codeでこの問題に遭遇しました。私はコードスクールのビデオの1つをフォローしていました。そこでは、データをmocks.tsファイルに分離し、コンパイルするたびに、それはモジュールではないと言っていました。VSコードの再起動が機能しました。これが起こったことは非常に奇妙ですが、別のファイルを別のファイルに移動するときにエラーは発生しませんでした。
エリックギャリソン

2
悲しいことですが、再起動は機能します。そして、それは私の人生を悲惨なものにします:何かがうまくいかないとき、私がミスをしたのか、ノード/角度/ビジュアルコードの不可解な癖が原因であるのかわかりませんまたはサーバー。それは専門家のやり方ではありません!:-(
アレクシスDufrenoy

2
ファイルを保存して修正しました。#悲しい
マルコム・アンダーソン

1
サーバーとエディターの両方を再起動しようとしましたが、役に立ちませんでした。クラスとファイルの名前を変更してみましたが、最終的には機能しました。
実行可能

37

インターフェイスのエクスポートキーワードを忘れていたため、同じチュートリアルで同じエラーが発生しました。


32

おそらく、クラス定義に「エクスポート」を追加するのを忘れていました。

->

export class Hero {
     id: number;
     name: string;
   }

また、試してみてください

export {Hero} 

hero.tsクラスの最後で、最後に大文字のファイル名とクラス名を確認します。


1
輸出を忘れずに。タイプミスがあるのではないかと思ったので、コードをコピーして貼り付けました。これで問題が解決しました。しかし、その後、以前のコードに戻し、それも機能しました。何かが間違っている。
Mariusz.W 2017年

この方法は通常の作成よりも優れていconstますか?
ダニ

29

エラーは、作成後にファイルを保存していないためです。

エディターで「すべて保存」をクリックして、すべてのファイルを保存してみてください。

保存されていないファイルの数は、青色で表示されている「ファイル」メニューから確認できます。



6

Stackblitzで同じエラーが発生する人向け

あなたは見つけるでしょう依存 IDEの左側のサイドバーにあるタブを。横にある更新ボタンをクリックするだけで問題ありません。


ここに画像の説明を入力してください


3

プロジェクトに新しいファイルを追加するたびに経験したように、ngサーバーを停止して再起動する必要がありました。


2

チュートリアルでは、すべてのコンポーネントとインターフェースファイルを同じディレクトリに配置しているため、'./hero'これを変更する必要がある別の場所に移動したい場合は、相対的なインポートを行います。

編集:コードは引き続き機能する可能性がありますが、不適切な場所からインポートしようとしているため、コンパイラーは文句を言います。構造に基づいてインポートを変更するだけです。例えば:

app/
  component1/
    component1.ts
  compnent2/
    component2.ts
  hero.ts

単にインポートをに変更しimport {Hero} from '../hero'ます。


私のコードは完全に私が書くものは何でも、しかし働いて、されますimport {Hero} from './';import {Hero} from './hero';。インターフェイスファイルを保存する最良の方法は何ですか?
Sunitrams

OPが抱えていた問題に対処できないと思いますので、申し訳ありませんが@Zyzleは反対票を投じました
Steve Dunn

2

このエラーは、 ng serve、新しく追加されたファイルを自動的にピックアップするサーブがためにます。これを修正するには、サーバーを再起動するだけです。

テキストエディターまたはIDEを再び開くことでこの問題は解決しますが、多くの人はプロジェクトを再び開くことによるストレスのすべてを経験したくありません。テキストエディターを閉じずにこれを修正するには...

サーバーが実行されているターミナルで、

  • を押しctrl+Cてサーバーを停止し、
  • サーバーを再起動します。 ng serve

うまくいくはずです。


1

私は同じ問題に直面しました。

サーバーを再起動したところ、問題なく動作しました。バグのようです。


1

サーブを再開

同じ問題がありました。エラーを検索するために、エラーを選択し、誤ってCTRL + C(コピーを意味する)を実行したため、ngサーブが終了しました。ng serveを再起動すると、エラーが消えました:)。時にはタイプミスと太い指が役立つ;-)


1

エディターの問題。Angular CLIを使用しない新しいファイルを作成する場合は、[ファイル]> [すべて保存(VSコード)]に移動して、エディターに新しい変更を認識させます。次に、「ng serve --open」を再度実行します。それは私のものを解決しました。それが役に立てば幸い


0

VSCで同じ問題が発生しました。エディターを再起動して、アプリケーションを再度起動しました。それはうまくいきました。


これは洞察を与える答えではありません。再起動がこの問題の答えであると考えている場合でも、これが発生する理由を言う必要があります。
M-2017

0

Visual Studio Codeを再起動する必要があるだけでなく、適切なコンパイルを行う前にノードサーバープロセスも再起動する必要があることがわかりました。


0

私は同じ問題に直面していて、サーバーを再起動してエディターを再度開いてみましたが、コンピューターの再起動が魔法をかけました。

PS:Windowsマシンで問題が発生していましたが、モジュールを新しいフォルダーに移動したときに問題が発生しました。


0

同様の問題がありました。代わりにヒーローを書いたヒーロー

以下をインポートします。

import { Hero } from '../Hero';

0

このエラーは、.tsファイルが保存されていない場合に発生することがあります。したがって、プロジェクト内のすべてのファイルが保存されていることを確認してください。そうでない場合は、エディターを再起動してみてください。


0

コマンドプロンプトを開き、アプリフォルダーに移動します。 D:\angular-tour-of-heroes\src\app

次に、次のコマンドを使用して新しいファイルを作成します。

ng generate class hero

これによりhero.tsファイルが作成されます。次に、エクスポートコードを貼り付けることができ、エラーはなくなりました。


0

すべてのファイルを保存する必要があります。たとえば、html、css、component.ts、モジュール、モデルファイル。各ファイルを開き、Ctrl-Sを押します。これは私のために働いた


0

私の場合、ファイル「app / hero.ts」への変更を保存するのを忘れていました。ngserveを保存して再起動した後、問題は解決しました。


0

私の決議、

私の場合、モデルファイルを作成し、空白のままにしました。

他のモデルにインポートするとエラーになります。したがって、モデルのtypescriptファイルを作成するときに定義を記述します。


0

変化する

import{observable} from 'rxjs/observable'; 

import{observable} from 'rxjs';

コンパイルする前に、.TSファイルを保存していることを確認してください。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.