File 'app / hero.ts' bukan kesalahan modul di konsol, di mana untuk menyimpan file antarmuka dalam struktur direktori dengan angular2?

144

Saya melakukan angular2tutorial di alamat ini: https://angular.io/docs/ts/latest/tutorial/toh-pt3.html Saya telah meletakkan heroantarmuka dalam satu file di bawah appfolder, di konsol saya memiliki kesalahan ini :

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.

Jika saya meletakkan file antarmuka saya di folder pahlawan kesalahan hilang, ini tidak disebutkan dalam dokumentasi, apa yang salah dengan impor saya ?

Arahan impor saya (saat mempercayai file komponen) di keduanya app.components.tsdan hero-detail.component.ts:

import {Component} from 'angular2/core';

import {Hero} from './hero';

Haruskah saya mengganti arahan impor saya dengan: import {Hero} from './'; atau cukup memasukkan kode ke folder pahlawan ?

Sunitram
sumber

Jawaban:

422

Coba mulai ulang editor di mana Anda menulis kode (kode VS atau luhur). Kompilasi dan Jalankan lagi. Saya telah melakukan hal yang sama dan berhasil.

Ini terjadi ketika Anda menambahkan kelas baru di luar dari editor Anda atau tetap menjalankan sudut pandang Anda 'melayani'. Sebenarnya editor Anda atau perintah 'ng serve' mungkin tidak dapat menemukan file yang baru dibuat.

ajitkumar
sumber
4
Mulai ulang berfungsi ... tetapi ada yang tahu Apa penyebabnya?
Gaddigesh
Saya juga mengalami masalah ini dengan Angular 4 dan VS Code. Saya mengikuti salah satu video di Code School di mana mereka memisahkan data menjadi file mocks.ts, dan setiap kali dikompilasi, katanya itu bukan modul. Restart VS Code berhasil. Sangat aneh bahwa ini terjadi, tetapi saya tidak mendapatkan kesalahan saat memindahkan potongan lain ke file terpisah.
Eric Garrison
2
Sedih untuk dikatakan, tetapi memulai kembali berfungsi. Dan itu membuat hidup saya sengsara: ketika sesuatu tidak berfungsi, saya tidak akan tahu apakah itu karena saya melakukan kesalahan atau karena beberapa kekhasan yang tidak dapat dijelaskan dari Node / Angular / Visual Code yang hanya akan membiarkannya bekerja jika saya me-restart Visual Code atau server. Bukan itu cara profesional bekerja! :-(
Alexis Dufrenoy
2
Saya memperbaikinya dengan menyimpan file saya. #sad
Malcolm Anderson
1
Mencoba me-restart server dan editor, Tidak membantu. Jadi coba ganti nama kelas dan file, akhirnya berhasil. Aneh tapi benar.
dieksekusi
37

Saya mendapat kesalahan yang sama dalam tutorial yang sama karena saya lupa kata kunci ekspor untuk antarmuka.

Rasmus Rummel
sumber
32

mungkin Anda lupa menambahkan "Ekspor" dalam definisi kelas.

->

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

Coba juga dengan

export {Hero} 

di bagian bawah kelas hero.ts Anda, dan akhirnya, periksa nama file huruf kapital dan nama kelas.

Sebastian Gomez
sumber
1
Saya tidak lupa mengekspor. Saya pikir saya mungkin salah ketik, jadi saya menyalin dan menempelkan kode Anda. Ini memperbaiki masalah. Tapi kemudian saya kembali ke kode saya sebelumnya dan itu berhasil juga. Sesuatu yang salah.
Mariusz.W
Apakah cara ini lebih baik daripada menciptakan yang normal const?
Dani
29

Kesalahannya adalah karena Anda belum menyimpan file setelah membuatnya.

Coba simpan semua file dengan mengklik "Simpan Semua" pada Editor.

Anda dapat melihat jumlah file yang tidak disimpan dengan melihat di bawah menu "File" yang ditampilkan menggunakan warna biru.

brijesh
sumber
13

Restart ng serveproses saya berhasil untuk saya

Andrea Gherardi
sumber
6

Untuk orang yang mendapatkan kesalahan yang sama pada stackblitz

Anda akan menemukan tab Ketergantungan di sidebar kiri IDE. Cukup klik tombol segarkan di sebelahnya dan Anda akan baik-baik saja.


masukkan deskripsi gambar di sini

Abdullah Khan
sumber
3

Seperti yang saya alami setiap kali saya menambahkan file baru ke proyek saya, saya harus berhenti dan memulai ulang server ng.

Hector
sumber
2

Tutorial telah Anda meletakkan semua komponen dan file antarmuka dalam direktori yang sama maka impor relatif './hero'jika Anda ingin memindahkannya ke tempat lain, Anda perlu mengubahnya.

Sunting: Kode mungkin masih berfungsi tetapi kompiler akan mengeluh karena Anda mencoba impor dari lokasi yang salah. Saya cukup mengubah impor berdasarkan struktur Anda. Sebagai contoh:

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

Saya hanya akan mengubah impor ke import {Hero} from '../hero'.

Zyzle
sumber
Kode saya berfungsi dengan baik, apa pun yang saya tulis, import {Hero} from './';atau import {Hero} from './hero';. Saya bertanya-tanya apa cara terbaik untuk menyimpan file antarmuka?
Sunitrams
Maaf @Zyzle, downvoted karena saya tidak berpikir ini mengatasi masalah OP
Steve Dunn
2

Kesalahan ini disebabkan oleh kegagalan ng servepenyajian untuk secara otomatis mengambil file yang baru ditambahkan. Untuk memperbaikinya, cukup restart server Anda.

Meskipun menutup pembukaan kembali editor teks atau IDE menyelesaikan masalah ini, banyak orang tidak ingin melalui semua tekanan membuka kembali proyek. Untuk Memperbaiki ini tanpa menutup editor teks ...

Di terminal tempat server berjalan,

  • Tekan ctrl+Cuntuk menghentikan server,
  • Mulai server lagi: ng serve

Itu seharusnya bekerja.

Pila
sumber
1

Saya menghadapi masalah yang sama.

Saya me-restart server saya dan berfungsi dengan baik. Sepertinya ada bug.

Dalvik
sumber
1

mulai lagi ng melayani

Saya memiliki masalah yang sama. Untuk mencari kesalahan, saya memilih kesalahan dan secara tidak sengaja melakukan CTRL + C (artinya menyalin), yang diakhiri dengan melayani. Saat memulai ulang layanan, kesalahan hilang :). Kadang kesalahan ketik dan jari gemuk membantu ;-)

Kishore
sumber
1

Masalah editor. Saat Anda membuat file baru yang tidak menggunakan CLI Angular, pastikan Anda membuka File> Simpan Semua (Kode VS) untuk membuat Editor mengetahui perubahan baru Anda. Kemudian jalankan "ng serve - open" lagi. Itu memecahkan milikku. Semoga ini bisa membantu

Hung Vu
sumber
0

Saya mengalami masalah yang sama di VSC. Apakah me-restart editor dan memulai aplikasi lagi. Itu bekerja dengan baik.

B_sadagopan
sumber
Ini bukan jawaban yang akan memberikan wawasan apa pun. Bahkan jika Anda berpikir memulai kembali adalah jawaban untuk masalah ini, Anda harus mengatakan mengapa ini terjadi.
M--
0

Saya menemukan bahwa saya tidak hanya harus me-restart Visual Studio Code tetapi juga proses server node sebelum saya bisa mendapatkan kompilasi yang baik.

Phred Menyhert
sumber
0

Saya menghadapi masalah yang sama, mencoba me-restart server saya, membuka kembali editor tetapi restart komputer melakukan keajaiban.

PS: Saya menghadapi masalah pada mesin windows dan masalah terjadi ketika saya memindahkan modul ke folder baru.

Api
sumber
0

Saya punya masalah serupa. Saya menulis pahlawan alih-alih Pahlawan

impor yang berikut ini:

import { Hero } from '../Hero';
Gero
sumber
0

Terkadang kesalahan ini terjadi ketika file .ts tidak disimpan. Jadi pastikan semua file dalam proyek disimpan jika tidak coba untuk me-restart editor.

babidi
sumber
0

Buka command prompt, buka folder aplikasi, mis D:\angular-tour-of-heroes\src\app

Kemudian buat file baru menggunakan perintah berikut:

ng generate class hero

Ini akan membuat hero.tsfile. Kemudian Anda dapat menempelkan kode ekspor, dan kesalahannya hilang.

ankit mishra
sumber
0

Anda harus menyimpan semua file. Misalnya html, css, component.ts, modul, file model. Buka setiap file dan tekan ctrl-S. Ini berhasil untuk saya

Abdul Mutaal
sumber
0

Dalam kasus saya, saya lupa untuk menyimpan perubahan pada file 'app / hero.ts', setelah menyimpan dan memulai kembali layanan, masalahnya telah teratasi.

tmndungu
sumber
0

Resolusi saya,

Dalam kasus saya, saya telah membuat file model dan membiarkannya tetap kosong,

jadi ketika saya mengimpornya ke model lain, itu memberi saya kesalahan. jadi tulis definisi ketika Anda membuat file naskah model.

Pradip Thakre
sumber
0

perubahan

import{observable} from 'rxjs/observable'; 

untuk

import{observable} from 'rxjs';

pastikan Anda telah menyimpan file .TS sebelum kompilasi.

muzammil berkata
sumber
0

tambahkan ini sebelum mengekspor kelas

@Injectable({
  providedIn: 'root'
})  
Pan Markosian
sumber