Tệp 'app / hero.ts' không phải là lỗi mô-đun trong bảng điều khiển, nơi lưu trữ các giao diện tệp trong cấu trúc thư mục với angular2?


144

Tôi đang thực hiện angular2hướng dẫn tại địa chỉ này: https://angular.io/docs/ts/latest/tutorial/toh-pt3.html Tôi đã đặt herogiao diện vào một tệp trong appthư mục, trong bảng điều khiển tôi gặp lỗi này :

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.

Nếu tôi đặt tệp giao diện của mình vào thư mục anh hùng thì lỗi sẽ biến mất, điều này không được đề cập trong tài liệu, điều gì đã xảy ra với quá trình nhập của tôi ?

Chỉ nhập khẩu của tôi (tại beguining các file thành phần) trong cả hai app.components.tshero-detail.component.ts:

import {Component} from 'angular2/core';

import {Hero} from './hero';

Tôi phải thay thế chỉ thị nhập của mình bằng cách: import {Hero} from './'; hoặc chỉ cần đặt mã vào thư mục anh hùng ?

Câu trả lời:


421

Hãy thử Khởi động lại trình soạn thảo mà bạn đang viết mã (mã VS hoặc Sublime). Biên dịch và chạy lại nó. Tôi đã làm như vậy và nó đã làm việc.

Điều này xảy ra khi bạn thêm một lớp mới bên ngoài từ trình soạn thảo của mình hoặc tiếp tục chạy ứng dụng góc cạnh của bạn. Trên thực tế, trình soạn thảo của bạn hoặc lệnh 'ng phục vụ' có thể không thể tìm thấy các tệp mới được tạo.


4
Khởi động lại công việc ... nhưng bất cứ ai cũng biết nguyên nhân gốc rễ là gì?
Gaddigesh

Tôi cũng gặp vấn đề này với Angular 4 và VS Code. Tôi đã theo dõi một trong những video trên Code School nơi họ phân tách dữ liệu thành tệp mocks.ts và mỗi lần nó được biên dịch, nó nói rằng đó không phải là một mô-đun. Khởi động lại mã VS làm việc. Thật kỳ lạ khi điều này xảy ra, nhưng tôi đã không gặp phải bất kỳ lỗi nào khi di chuyển các phần khác vào các tệp riêng biệt.
Eric Garrison

2
Thật buồn khi nói, nhưng khởi động lại hoạt động. Và nó làm cho cuộc sống của tôi trở nên khốn khổ: khi một cái gì đó không hoạt động, tôi sẽ không biết liệu đó là do tôi đã phạm sai lầm hay vì một sự giải thích không thể giải thích được của Node / Angular / Visual Code sẽ chỉ cho phép nó hoạt động nếu tôi khởi động lại Visual Code hoặc máy chủ. Đó không phải là cách các chuyên gia làm việc! :-(
Alexis Dufrenoy

2
Tôi đã sửa nó bằng cách lưu tập tin của tôi. #sad
Malcolm Anderson

1
Đã thử khởi động lại cả máy chủ và trình chỉnh sửa, Không giúp được gì. Vì vậy, đã thử đổi tên các lớp và tệp, cuối cùng nó đã hoạt động. Lạ nhưng đúng.
thực thi

37

Tôi đã gặp lỗi tương tự trong cùng một hướng dẫn vì tôi đã quên từ khóa xuất cho giao diện.


32

có lẽ bạn đã quên thêm "Xuất" trong định nghĩa lớp.

->

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

Ngoài ra, hãy thử với

export {Hero} 

ở dưới cùng của lớp hero.ts của bạn, và cuối cùng, kiểm tra tên tệp chữ hoa và tên lớp.


1
Tôi không quên xuất khẩu. Tôi nghĩ rằng tôi có thể có một lỗi đánh máy nên tôi đã sao chép và dán mã của bạn. Điều này đã khắc phục vấn đề. Nhưng sau đó tôi đã trở lại mã trước đó và nó cũng hoạt động. Có gì đó không đúng ở đây.
Mariusz.W

cách này tốt hơn so với việc tạo ra một bình thường const?
Dani

29

Lỗi là do bạn chưa lưu các tệp sau khi tạo chúng.

Hãy thử lưu tất cả các tệp bằng cách nhấp vào "Lưu tất cả" trên Trình chỉnh sửa.

Bạn có thể thấy số lượng tệp không được lưu bằng cách xem bên dưới menu "Tệp" được hiển thị bằng màu xanh lam.



6

Đối với những người nhận được cùng một lỗi trên stackblitz

Bạn sẽ tìm thấy một tab Phụ thuộc trên thanh bên trái của IDE. Chỉ cần nhấp vào nút refresh bên cạnh nó và bạn sẽ ổn.


nhập mô tả hình ảnh ở đây


3

Khi tôi trải nghiệm bất cứ khi nào tôi thêm một tệp mới vào dự án của mình, tôi phải dừng và khởi động lại máy chủ ng.


2

Hướng dẫn có bạn đặt tất cả các thành phần và tệp giao diện vào cùng một thư mục do đó nhập tương đối './hero'nếu bạn muốn di chuyển nó đi nơi khác, bạn cần thay đổi điều này.

Chỉnh sửa: Mã vẫn có thể hoạt động nhưng trình biên dịch sẽ khiếu nại vì bạn đang cố nhập từ một vị trí không chính xác. Tôi chỉ đơn giản là thay đổi nhập khẩu dựa trên cấu trúc của bạn. Ví dụ:

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

Tôi chỉ đơn giản là thay đổi nhập khẩu import {Hero} from '../hero'.


Mã của tôi là hoàn toàn làm việc mặc dù, bất cứ điều gì tôi viết, import {Hero} from './';hoặc import {Hero} from './hero';. Tôi tự hỏi cách tốt nhất để lưu trữ các tập tin giao diện là gì?
Sunitram

Xin lỗi @Zyzle, bị đánh giá thấp vì tôi không nghĩ vấn đề này mà OP gặp phải
Steve Dunn

2

Lỗi này là do lỗi của ng servephục vụ để tự động lấy một tệp mới được thêm vào. Để khắc phục điều này, chỉ cần khởi động lại máy chủ của bạn.

Mặc dù việc đóng lại trình soạn thảo văn bản hoặc IDE đã giải quyết vấn đề này, nhiều người không muốn trải qua tất cả những căng thẳng khi mở lại dự án. Để khắc phục điều này mà không đóng trình soạn thảo văn bản ...

Trong thiết bị đầu cuối nơi máy chủ đang chạy,

  • Nhấn ctrl+Cđể dừng máy chủ sau đó,
  • Khởi động lại máy chủ: ng serve

Cần làm việc.


1

Tôi phải đối mặt với cùng một vấn đề.

Tôi khởi động lại máy chủ của tôi và nó hoạt động tốt. Có vẻ như một lỗi.


1

khởi động lại phục vụ

Tôi gặp vấn đề tương tự. Để tìm kiếm lỗi, tôi đã chọn lỗi và vô tình thực hiện CTRL + C (nghĩa là sao chép), kết thúc ng phục vụ. Khi khởi động lại phục vụ, lỗi biến mất :). Đôi khi lỗi chính tả và ngón tay mập giúp ;-)


1

Vấn đề biên tập. Khi bạn tạo các tệp mới không sử dụng Angular CLI, hãy đảm bảo bạn đi đến Tệp> Lưu tất cả (Mã VS) để Trình chỉnh sửa nhận biết các thay đổi mới của bạn. Sau đó chạy "ng phục vụ --open" một lần nữa. Nó đã giải quyết của tôi. Hy vọng nó giúp


0

Tôi gặp vấn đề tương tự trong VSC. Đã khởi động lại trình chỉnh sửa và khởi động lại ứng dụng. Nó hoạt động tốt.


Đây không phải là một câu trả lời sẽ cung cấp cho bất kỳ cái nhìn sâu sắc. Ngay cả khi bạn nghĩ khởi động lại là câu trả lời cho vấn đề này, bạn nên nói tại sao điều này xảy ra.
M--

0

Tôi thấy rằng tôi không chỉ phải khởi động lại Visual Studio Code mà còn xử lý máy chủ nút trước khi tôi có thể biên dịch tốt.


0

Tôi đã phải đối mặt với cùng một vấn đề, đã thử khởi động lại máy chủ của mình, mở lại trình chỉnh sửa nhưng khởi động lại máy tính đã làm nên điều kỳ diệu.

PS: Tôi đã gặp vấn đề trên máy windows và sự cố xảy ra khi tôi chuyển mô-đun sang thư mục mới.


0

Tôi đã có một vấn đề tương tự. Tôi đã viết anh hùng thay vì anh hùng

nhập khẩu như sau:

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

0

Đôi khi lỗi này xảy ra khi tệp .ts không được lưu. Vì vậy, hãy đảm bảo tất cả các tệp trong dự án được lưu nếu không hãy thử khởi động lại trình chỉnh sửa.


0

Mở dấu nhắc lệnh, đi đến thư mục ứng dụng, vd D:\angular-tour-of-heroes\src\app

Sau đó tạo một tệp mới bằng lệnh sau:

ng generate class hero

Điều này sẽ tạo ra một hero.tstập tin. Sau đó, bạn có thể dán mã xuất, và lỗi đã biến mất.


0

Bạn nên lưu tất cả các tập tin. Ví dụ: tệp html, css, component.ts, mô-đun, mô hình. Mở từng tệp và nhấn ctrl-S. Điều này làm việc cho tôi


0

Trong trường hợp của tôi, tôi đã quên lưu các thay đổi vào tệp 'app / hero.ts', sau khi lưu và khởi động lại, phục vụ vấn đề đã được giải quyết.


0

Nghị quyết của tôi,

Trong trường hợp của tôi, tôi đã tạo một tệp mô hình và để trống,

Vì vậy, khi tôi nhập nó vào mô hình khác, nó cho tôi lỗi. vì vậy hãy viết định nghĩa khi bạn tạo một tệp bản thảo mô hình.


0

thay đổi

import{observable} from 'rxjs/observable'; 

đến

import{observable} from 'rxjs';

đảm bảo bạn đã lưu tệp .TS trước khi biên dịch.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.