फ़ाइल 'ऐप / Hero.ts' कंसोल में एक मॉड्यूल त्रुटि नहीं है, जहां कोणीय 2 के साथ निर्देशिका संरचना में इंटरफेस को संग्रहीत करना है?


144

मैं angular2इस पते पर ट्यूटोरियल कर रहा हूं : https://angular.io/docs/ts/latest/tutorial/toh-pt3.html मैंने फ़ोल्डर heroमें 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.

अगर मैं एक हीरो फ़ोल्डर में अपनी इंटरफ़ेस फ़ाइल डाल देता हूं, तो त्रुटि गायब हो जाती है, यह प्रलेखन में उल्लिखित नहीं है, मेरे आयात में क्या गलत है ?

मेरा आयात निर्देश (कंपोनेंट फ़ाइलों के पूर्ण होने पर) दोनों में app.components.tsऔर hero-detail.component.ts:

import {Component} from 'angular2/core';

import {Hero} from './hero';

क्या मुझे अपने आयात निर्देश को इसके द्वारा प्रतिस्थापित करना चाहिए import {Hero} from './'; या कोड को हीरो फ़ोल्डर में रखना चाहिए ?

जवाबों:


422

संपादक को पुनः आरंभ करने का प्रयास करें जिसमें आप कोड (वीएस कोड या उदात्त) लिख रहे हैं। इसे फिर से संकलित करें और चलाएं। मैंने वही किया है और यह काम किया है।

यह तब होता है जब आप अपने संपादक से बाहर एक नया वर्ग जोड़ते हैं या अपने कोणीय cli 'एनजी सर्व' को चलाते रहते हैं। वास्तव में आपका संपादक या 'एनजी सर्व' कमांड नव निर्मित फाइलों को खोजने में सक्षम नहीं हो सकता है।


4
काम शुरू करना ... लेकिन किसी को पता है कि मूल कारण क्या है?
गद्दीशेश

मैं भी इस समस्या में कोणीय 4 और वीएस कोड के साथ भाग गया। मैं कोड स्कूल के वीडियो में से एक का अनुसरण कर रहा था, जहाँ उन्होंने डेटा को एक मज़ाकिया फ़ाइल में अलग कर दिया था, और हर बार संकलित होने के बाद, यह कहा कि यह एक मॉड्यूल नहीं था। वीएस कोड को फिर से शुरू करने का काम किया। यह बहुत अजीब है कि ऐसा हुआ, लेकिन अन्य टुकड़ों को अलग-अलग फाइलों में ले जाने पर मुझे कोई त्रुटि नहीं मिली।
एरिक गैरीसन

2
यह कहना दुखद है, लेकिन कामों को फिर से शुरू करना। और यह मेरे जीवन को दयनीय बनाता है: जब कुछ काम नहीं करता है, तो मुझे पता नहीं चलेगा कि क्या यह है क्योंकि मैंने कोई गलती की है या नोड / कोणीय / दृश्य कोड के कुछ अकथनीय क्विक के कारण जो दृश्य कोड को पुनरारंभ करने पर केवल इसे काम करने देगा या सर्वर। ऐसा नहीं है कि पेशेवर कैसे काम करते हैं! :-(
एलेक्सिस डुफ्रेनॉय

2
मैंने अपनी फ़ाइल सहेज कर इसे ठीक कर दिया। #sad
मैल्कम एंडरसन

1
सर्वर और संपादक दोनों को पुनः आरंभ करने की कोशिश की, मदद नहीं की। इसलिए कक्षाओं और फ़ाइलों के नाम बदलने की कोशिश की, अंततः यह काम किया। लेकिन सही है।
निष्पादन योग्य

37

मुझे उसी ट्यूटोरियल में त्रुटि मिली क्योंकि मैं इंटरफ़ेस के लिए निर्यात कीवर्ड भूल गया था ।


32

शायद आप वर्ग परिभाषा में "निर्यात" जोड़ना भूल गए।

->

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

इसके अलावा, के साथ प्रयास करें

export {Hero} 

अपने Hero.ts वर्ग के अंत में, और अंत में, बड़े अक्षर फ़ाइल नाम और वर्ग नाम की जाँच करें।


1
मैं निर्यात करना नहीं भूली। मुझे लगा कि शायद मेरे पास एक टाइपो है इसलिए मैंने आपके कोड को कॉपी और पेस्ट किया। इससे समस्या ठीक हो गई। लेकिन फिर मैं अपने पिछले कोड पर लौट आया और इसने काम भी किया। कुछ गड़बड़ है।
मारिस्ज़

क्या यह तरीका सामान्य बनाने से बेहतर है const?
दानी

29

त्रुटि इसलिए है क्योंकि आपने फ़ाइलों को बनाने के बाद उन्हें सहेजा नहीं है।

संपादक पर "सभी सहेजें" पर क्लिक करके सभी फ़ाइल को सहेजने का प्रयास करें।

आप उन फ़ाइलों की संख्या देख सकते हैं जो नीले रंग का उपयोग करके दिखाए गए "फ़ाइल" मेनू के नीचे देखकर सहेजे नहीं गए हैं।



6

स्टैकब्लिट्ज़ पर समान त्रुटि प्राप्त करने वाले लोगों के लिए

आपको IDE के बाईं ओर एक निर्भरता टैब मिलेगा । बस इसके आगे रिफ्रेश बटन पर क्लिक करें और आप जाना अच्छा रहेगा।


यहां छवि विवरण दर्ज करें


3

जैसा कि मैंने अनुभव किया जब भी मैं अपनी परियोजना में एक नई फ़ाइल जोड़ता हूं, तो मुझे एनजी सर्वर को बंद करने और फिर से शुरू करने के लिए मिला।


2

ट्यूटोरियल में आपके पास सभी घटकों और इंटरफ़ेस फ़ाइल को एक ही निर्देशिका में रखा जाता है इसलिए रिश्तेदार आयात './hero'यदि आप इसे कहीं और स्थानांतरित करना चाहते हैं तो आपको इसे बदलने की आवश्यकता है।

संपादित करें: कोड अभी भी काम कर सकता है लेकिन कंपाइलर शिकायत करेगा क्योंकि आप गलत स्थान से आयात का प्रयास कर रहे हैं। मैं केवल आपकी संरचना के आधार पर आयात को बदलूंगा। उदाहरण के लिए:

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

मैं बस करने के लिए आयात बदल जाएगा import {Hero} from '../hero'


मेरा कोड पूरी तरह से काम कर रहा है, हालांकि, जो कुछ भी मैं लिखता हूं, import {Hero} from './';या import {Hero} from './hero';। मुझे आश्चर्य है कि इंटरफ़ेस फ़ाइलों को संग्रहीत करने का सबसे अच्छा तरीका क्या है?
सुनामोग्राम्स

क्षमा करें @Zyzle, नीचे के रूप में मुझे नहीं लगता कि यह ओपी के पास इस मुद्दे को संबोधित करता है
स्टीव डन

2

यह त्रुटि ng serveएक नए जोड़े गए फ़ाइल को स्वचालित रूप से लेने के लिए सेवा के विफल होने के कारण होती है । इसे ठीक करने के लिए, बस अपने सर्वर को पुनरारंभ करें।

हालाँकि टेक्स्ट एडिटर या IDE को फिर से खोलना इस समस्या को हल करता है, लेकिन कई लोग प्रोजेक्ट को फिर से खोलने के तनाव से नहीं गुजरना चाहते हैं। पाठ संपादक को बंद किए बिना इसे ठीक करने के लिए ...

टर्मिनल में जहां सर्वर चल रहा है,

  • ctrl+Cसर्वर को रोकने के लिए दबाएँ ,
  • सर्वर फिर से शुरू करें: ng serve

वह काम करना चाहिए।


1

मैंने उसी मुद्दे का सामना किया।

मैंने अपना सर्वर पुनः आरंभ किया और यह ठीक काम करता है। बग जैसा लगता है।


1

पुनरारंभ एनजी सेवा

मेरी भी यही समस्या थी। त्रुटि की खोज करने के लिए, मैंने त्रुटि का चयन किया और गलती से CTRL + C (कॉपी करने का अर्थ) किया, जिसने एनजी सर्व को समाप्त कर दिया। एनजी सेवा शुरू करने पर, त्रुटि गायब हो गई :)। कभी-कभी टाइपोस और वसा उंगलियां मदद ;-)


1

संपादक का मुद्दा। जब आप नई फाइलें बनाते हैं जो कि कोणीय सीएलआई का उपयोग नहीं करते हैं, तो सुनिश्चित करें कि आप संपादक को अपने नए परिवर्तनों से अवगत कराने के लिए फाइल> सेव ऑल (वीएस कोड) पर जाएं। फिर "एनजी सर्व - ओपेन" फिर से चलाएं। इसने मेरा हल कर दिया। आशा करता हूँ की ये काम करेगा


0

मैं VSC में एक ही मुद्दे पर भाग गया। क्या संपादक को पुनः आरंभ किया और फिर से आवेदन शुरू किया। यह ठीक काम किया।


यह कोई जवाब नहीं है जो कोई भी जानकारी देगा। यहां तक ​​कि अगर आपको लगता है कि पुनरारंभ करना इस समस्या का जवाब है, तो आपको यह कहना चाहिए कि ऐसा क्यों होता है।
M--

0

मैंने पाया कि न केवल मुझे विजुअल स्टूडियो कोड को फिर से शुरू करना था, बल्कि एक अच्छा संकलन प्राप्त करने से पहले नोड सर्वर प्रक्रिया को भी पूरा करना था।


0

मैं एक ही मुद्दे का सामना कर रहा था, मेरे सर्वर को फिर से शुरू करने की कोशिश की, संपादक को फिर से खोलना लेकिन कंप्यूटर पुनरारंभ ने जादू किया।

पुनश्च: मैं एक विंडोज़ मशीन पर समस्या का सामना कर रहा था और एक नए फ़ोल्डर में मॉड्यूल ले जाने पर समस्या उत्पन्न हुई।


0

मेरा मुद्दा भी ऐसा ही था। मैंने लिखा नायक के बजाय हीरो

निम्नलिखित आयात करें:

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

0

कभी-कभी .ts फ़ाइल को सहेजे नहीं जाने पर यह त्रुटि होती है। इसलिए सुनिश्चित करें कि परियोजना की सभी फाइलें सहेज ली गई हैं अन्यथा संपादक को पुनरारंभ करने का प्रयास करें।


0

कमांड प्रॉम्प्ट खोलें, ऐप फ़ोल्डर में जाएं, जैसे D:\angular-tour-of-heroes\src\app

फिर निम्न कमांड का उपयोग करके एक नई फ़ाइल बनाएं:

ng generate class hero

यह एक hero.tsफाइल बनाएगा । फिर आप निर्यात कोड पेस्ट कर सकते हैं, और त्रुटि समाप्त हो गई है।


0

आपको सभी फ़ाइलों को सहेजना चाहिए। उदाहरण के लिए html, css, Components.ts, मॉड्यूल, मॉडल फाइलें। प्रत्येक फ़ाइल खोलें और ctrl-S दबाएँ। इसने मेरे लिए काम किया


0

मेरे मामले में मैं फ़ाइल 'app / hero.ts' में परिवर्तन सहेजना भूल गया था, समस्या को हल करने के बाद एनजी को सहेजने और फिर से शुरू करने के बाद।


0

मेरा संकल्प,

मेरे मामले में, मैंने एक मॉडल फ़ाइल बनाई है और उसे खाली रखा है,

इसलिए जब मैंने इसे अन्य मॉडल में आयात किया, तो यह मुझे त्रुटि देता है। इसलिए जब आप मॉडल टाइपस्क्रिप्ट फ़ाइल बनाते हैं तो परिभाषा लिखें।



हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.