ত্রুটি: যুক্তি কোনও ফাংশন নয়, সংজ্ঞায়িত হয়ে গেছে


120

স্কেলা প্লে সহ অ্যাঙ্গুলারজেএস ব্যবহার করে, আমি এই ত্রুটিটি পাচ্ছি।

ত্রুটি: আর্গুমেন্ট 'মেইনসিআরটিএল' কোনও ফাংশন নয়, সংজ্ঞায়িত হয়েছে

আমি সপ্তাহের দিনগুলি নিয়ে একটি সারণী তৈরি করার চেষ্টা করছি।

আমার কোডটি একবার দেখুন আমি কন্ট্রোলারের নাম পরীক্ষা করেছিলাম, তবে এটি সঠিক বলে মনে হচ্ছে। দ্রষ্টব্য: এই এসও উত্তর থেকে কোড ব্যবহৃত

index.scala.html

@(message: String)

@main("inTime") {

<!doctype html>
<html lang="en" ng-app>
    <head>
        <link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/main.css")">
    </head>
<div ng-controller="MainCtrl">
    <table border="1">
    <tbody ng-repeat='(what,items) in data'>
      <tr ng-repeat='item in items'>
        <td ngm-if="$first" rowspan="{{items.length}}">{{what}}</td>
        <td>{{item}}</td>
      </tr>
    </tbody>
  </table>
</div>
</html> 
}

MainCtrl.js

(function() {
    angular.module('[myApp]', []).controller('MainCtrl', function($scope) {
        $scope.data = {
            Colors: ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]
        }
    });
}());

15
এইচটিএমএল যেখানে আপনি ব্যবহার করেছেন ng-appআপনি এটিকে এটিকে পরিবর্তন করতে পারেনng-app=myApp
চাঁদমেনি

@ চন্দারমানি
কেভিন মেরিডিথ

আপনি কি কোড থেকে ক্লোজার (আইআইএফই) সরিয়ে দেওয়ার চেষ্টা করেছেন? আমার যখন এই সমস্যা হয়েছিল তখন এটি আমার জাভাস্ক্রিপ্টে আমার পিএইচপি ত্রুটি ছিল।
কেভিন বিয়াল

1
আপনি এই সমস্যাটি চেকলিস্ট দ্বারা আপনার সমস্যাটি সন্ধান করতে পারেন: stackoverflow.com/a/26797874/930170
সের্গেই পানফিলভ

আপনি বান্ডেলকনফিগ.সি.এস. ফাইলটিতে মেইনসিআরটিএল কনট্রোল.আরএস যুক্ত করেছেন কিনা তা নিশ্চিত করুন
সৈয়দ মোহাম্মদ

উত্তর:


107

[]মডিউলটির নাম ([মাই অ্যাপ)] থেকে সরান

angular.module('myApp', [])

এবং ng-app="myApp"এইচটিএমএল এ যুক্ত করুন এবং এটি কাজ করা উচিত।


1
এটির কাজ করার জন্য আমাকে যা করতে হয়েছিল তা হ'ল দ্বিতীয় পরামর্শ (যেমন এনজি-অ্যাপ্লিকেশন = "মাই অ্যাপ" সেট করুন)। আমি []] সরিয়ে ফেললে আমি অন্য একটি ত্রুটি পেয়েছি।
জেসন

15
দ্বিতীয় প্যারামিটার থাকা []ইঙ্গিত দেয় যে আপনি একটি নতুন মডিউল তৈরি করছেন। দ্বিতীয় প্যারামিটার অপসারণ ইঙ্গিত দেয় যে আপনি একটি বিদ্যমান মডিউল পুনরুদ্ধার করছেন। সুতরাং চেক করার একটি সম্ভাবনা হ'ল আপনি যদি angular.moduleদ্বিতীয় প্যারামিটার সহ দু'বার কল করে থাকেন। যদি তা হয় তবে পরবর্তী ঘটনাটি দ্বিতীয়টি ওভাররাইট করে, বিন্দুগুলির কোনও সংজ্ঞা সেই বিন্দু পর্যন্ত গোপন করে।
কার্ল জি

26
তিনি যখন মুছে ফেলার জন্য বলেন []তিনি প্রথম প্যারামিটার যেখানে ওপি হয়েছে উল্লেখ এর [myApp]পরিবর্তে myApp। তিনি দ্বিতীয় প্যারামিটারের কথা বলছেন না।
কেভিন বিয়াল

1
আপনি যদি রুট ব্যবহার করছেন তবে আপনার নিয়ামকের নাম পরীক্ষা করুন। রুট সংজ্ঞাতে নিয়ামকের নাম কেস সংবেদনশীল।
লাতিন ওয়ারিয়র

78

প্রথম। আপনি যে controllerসংজ্ঞাটি নির্ধারণ করছেন তার নিয়ন্ত্রকের নামের মতো রুটের সংজ্ঞাগুলিতে আপনার সঠিক আছে কিনা তা পরীক্ষা করে দেখুন

communityMod.config(['$routeProvider',
  function($routeProvider) {
    $routeProvider.
      when('/members', {
        templateUrl: 'modules/community/views/members.html',
        controller: 'CommunityMembersCtrl'
      }).
      otherwise({
        redirectTo: '/members'
      });
  }]);

communityMod.controller('CommunityMembersCtrl', ['$scope',
    function ($scope) {
        $scope.name = 'Hello community';
    }]);

এই উদাহরণে বিভিন্ন নিয়ামকের নামগুলি ত্রুটির দিকে পরিচালিত করবে, তবে এই উদাহরণটি সঠিক

আপনি আপনার জাভাস্ক্রিপ্ট ফাইলটি আমদানি করেছেন কিনা তা সেকেন্ড চেক করুন:

<script src="modules/community/controllers/CommunityMembersCtrl.js"></script>


30
আমার অভিজ্ঞতায় আপনার "সেকেন্ড" সর্বদা সমস্যা। আমি প্রায়শই আমার কন্ট্রোলারগুলি আমদানি করতে ভুলে যাইindex.html
মিসানফোর্ড

এটি আমার ক্ষেত্রে দ্বিতীয়টিও ছিল, জেএস ফাইলটি আমদানি করতে ভুলে গিয়েছিল ...
সৌরভ মিসরা

26

আমার একই ত্রুটি বার্তা ছিল (আমার ক্ষেত্রে: "আর্গুমেন্ট 'ল্যাঙ্গুয়েজসিলিটরসিআরটিএল' কোনও ফাংশন নয়, অপরিশোধিত হয়ে গেছে")।

কৌণিক বীজের কোডের সাথে কিছুটা ক্লান্তিকর তুলনার পরে, আমি জানতে পেরেছিলাম যে আমি এর আগে অ্যাপ্লিকেশন.জেএসএর নিয়ন্ত্রকগুলির মডিউলটির একটি উল্লেখ মুছে ফেলেছি (এটি https://github.com/angular/angular-seed/blob/master/app/js/app.js এ স্পট করুন )

সুতরাং আমি এটি ছিল:

angular.module('MyApp', ['MyApp.filters', 'MyApp.services', 'MyApp.directives'])

এটি ব্যর্থ হয়েছে।

এবং যখন আমি অনুপস্থিত রেফারেন্স যুক্ত করেছি:

angular.module('MyApp', ['MyApp.filters', 'MyApp.services', 'MyApp.controllers', 'MyApp.directives'])

ত্রুটির বার্তাটি অদৃশ্য হয়ে গেল এবং কৌনিকটি আবার নিয়ন্ত্রকদের তদারকি করতে পারে।


একই সমস্যা ছিল, আমার সমস্যাটি হ'ল আমি অ্যাপ্লিকেশন মডিউলে আমার নিয়ামক যুক্ত করতে ভুলে গিয়েছিলাম ... কেন এটি স্বয়ংক্রিয়ভাবে ঘটে না ??? যাইহোক ধন্যবাদ!
TheZuck

16

কিছু সময় এই ত্রুটিটি এইচটিএমএলে উল্লিখিত দুটি ng-app নির্দেশের ফলাফল a আমার ক্ষেত্রে ভুল করে আমি ng-appআমার htmlট্যাগে এবং ট্যাগটিতে ng-app="myApp"এইভাবে নির্দিষ্ট করেছিলাম body:

<html ng-app>
  <body ng-app="myApp"></body>
</html>

1
আমার অ্যাপটি মডিউলটিতে যখন আমি ইঞ্জেকশনটি যোগ না করলাম তখন এটি আমার কাছে ঘটেছিল।
ঝান্ধিকাস

ধন্যবাদ! এটি আমার সমস্যাটি স্থির করেছে।
ব্র্যাডডেন_গ্রস

6

এটি গুরুতরভাবে আমাকে 4 ঘন্টা (এসওতে অন্তহীন অনুসন্ধানগুলি সহ) নিয়ে গেছে তবে শেষ পর্যন্ত আমি এটি পেয়েছি: ভুল করে (অজান্তেই) আমি কোথাও একটি স্থান যুক্ত করেছি।

আপনি এটি স্পট করতে পারেন?

angular.module('bwshopper.signup').controller('SignupCtrl ', SignupCtrl);

সুতরাং ... 4 ঘন্টা পরে আমি দেখেছি যে এটি হওয়া উচিত:

angular.module('bwshopper.signup').controller('SignupCtrl', SignupCtrl);

খালি চোখে দেখা প্রায় অসম্ভব।

এটি পুনর্বিবেচনা নিয়ন্ত্রণ (গিট বা যাই হোক না কেন) এবং ইউনিট / রিগ্রেশন পরীক্ষার অতীব গুরুত্বকে জোর দেয়।


1
আমার উত্তরটি কোনও অতিরিক্ত স্থান নয় তবে এটি আমাকে ঠিক করার দিকে নিয়ে যায়। আমার Controllerপরিবর্তে ছিল controllerএবং এটি সমস্ত গ্রহণ করেছিল।
গ্র্যান্ডাইজার

এবং আমি আমার ফাইলের বিকল্পগুলি নামগুলি দিয়েছি - moda.controller.js তবে বিকল্পগুলি খুঁজছেন - modal.controller.js ডিওএইচ!
ফিশ 13

আমার কারণ আমি বুন্ডলকনফিগ .js যুক্ত করতে ভুলে গেছি। সাধারণ কিন্তু হতাশাবোধক।
এজ বায়ারাক

4

আমি একই সমস্যার মুখোমুখি হয়েছি এবং আমার ক্ষেত্রে এটি এই সমস্যার ফলস্বরূপ ঘটছে:

আমি নিয়ামকগুলিকে একটি পৃথক মডিউলে সংজ্ঞায়িত করেছি (যার নাম 'myApp.controllers' বলা হয়) এবং মূল অ্যাপ্লিকেশন মডিউলটিতে (যেমন 'মাই অ্যাপ' নামে পরিচিত) ইনজেকশন দেওয়া হয়েছিল:

angular.module('myApp', ['myApp.controllers'])

একজন সহকর্মী একটি পৃথক ফাইলে অন্য কন্ট্রোলার মডিউলটিকে ধাক্কা দিয়েছিল তবে আমার মতো একই নামের সাথে (যেমন 'মাই অ্যাপ্লিকেশন নিয়ন্ত্রণকারী)' যা এই ত্রুটি ঘটায়। আমি মনে করি কারণ কৌনিকগুলি সেই নিয়ামক মডিউলগুলির মধ্যে বিভ্রান্ত হয়েছিল। তবে ত্রুটি বার্তাটি কী ভুল হচ্ছে তা আবিষ্কার করতে খুব একটা সহায়ক ছিল না।


1
এটি মডিউলের দ্বিতীয় প্যারামিটারটি সরিয়ে ফিক্স করা উচিত ... দ্বিতীয় প্যারামিটার ছাড়াই অ্যাঙ্গুলার.মডিউল ('মাই অ্যাপ') ব্যবহার করে বিদ্যমান মডিউলটি পেতে। যেমন কৌণিক.মডিউল ('মাই অ্যাপ')। কনটোলার (...)
সন্তোষ

3

আমার ক্ষেত্রে (ওভারভিউ পৃষ্ঠা এবং একটি "অ্যাড" পৃষ্ঠা থাকা) আমি নীচের মতো আমার রাউটিং সেটআপটি সহ পেয়েছি। এটি AddCtrl এর জন্য বার্তা দিচ্ছিল যা ইনজেকশন দেওয়া যায়নি ...

$routeProvider.
  when('/', {
    redirectTo: '/overview'
  }).      
  when('/overview', {
    templateUrl: 'partials/overview.html',
    controller: 'OverviewCtrl'
  }).
  when('/add', {
    templateUrl: 'partials/add.html',
    controller: 'AddCtrl'
  }).
  otherwise({
    redirectTo: '/overview'
  });

কারণ when('/'রুটের আমার সমস্ত রুট ওভারভিউতে গিয়েছিল এবং নিয়ন্ত্রককে / অ্যাড রুটের পৃষ্ঠা রেন্ডারিংয়ের সাথে মিলানো যায়নি। এটি বিভ্রান্তকর ছিল কারণ আমি অ্যাড। Html টেমপ্লেটটি দেখেছি তবে এর নিয়ামকটি কোথাও পাওয়া যায় নি।

যখন কেসটি আমার জন্য এই সমস্যাটি স্থির করে তখন '/' - রুট সরিয়ে ফেলা হচ্ছে।


আমি এই ত্রুটিটিও পেয়েছি এবং আমার চুলগুলি ছিঁড়ে ফেলছি কারণ এটি আমার টিএফএস বিল্ডগুলি ব্যর্থ করে দেয়। '/' রুটটি সম্পর্কে মন্তব্য করা আমার জন্য এটিও ঠিক করে দিয়েছে। এখনই বুঝতে হবে কেন!
ফিলিপ কোপলি

3

আপনি যদি সাবমডিউলে থাকেন তবে মূল অ্যাপটিতে মডিউলটি ঘোষণা করতে ভুলবেন না। অর্থাত:

<scrip>
angular.module('mainApp', ['subModule1', 'subModule2']);

angular.module('subModule1')
   .controller('MyController', ['$scope', function($scope) {
      $scope.moduleName = 'subModule1';
   }]);
</script>
...
<div ng-app="mainApp">
   <div ng-controller="MyController">
   <span ng-bind="moduleName"></span>
</div>

আপনি যদি মেইন অ্যাপে সাবমডিউল 1 ঘোষণা না করেন তবে আপনি একটি "[এনজি: আরকিউ] আর্গুমেন্ট পাবেন" মাইকন্ট্রোলার "কোনও ফাংশন নয়, অপরিশোধিত হয়েছে got


2

Уমেডের দ্বিতীয় পয়েন্টটি আমার ক্ষতি ছিল তবে কেবল রেকর্ডের জন্য, সম্ভবত এটি কোথাও কাউকে সহায়তা করছে:

আমার একই সমস্যা ছিল এবং বাদাম যাওয়ার ঠিক আগে আমি আবিষ্কার করেছি যে আমি আমার নিয়ামক স্ক্রিপ্ট অন্তর্ভুক্ত করতে ভুলে গিয়েছি।

আমার অ্যাপটি এএসপি.নেট এমভিসির উপর ভিত্তি করে আমি নীচের স্নিপেটটি আমার অ্যাপ_স্টার্ট / বান্ডেলকনফিগ.সি.এস এ myselfুকিয়ে নিজেকে স্নেহ বজায় রাখার সিদ্ধান্ত নিয়েছি

bundles.Add(new ScriptBundle("~/app").Include(
                "~/app/app.js",
                "~/app/controllers/*.js",
                "~/app/services/*.js" ));

এবং Layout.cshtml এ

<head>
...
   @Scripts.Render("~/app")
...
</head>

এখন আর আমাকে ম্যানুয়ালি ফাইল যুক্ত করার বিষয়ে ভাবতে হবে না। অনড় দৃষ্টিতে প্রকল্পটি স্থাপনের সময় আমার সত্যিই এটি করা উচিত ছিল ...


1

লগইনকন্ট্রোলারের সাথে আমি বুদ্ধিমান ত্রুটি পেয়েছি, যা আমি প্রধান সূচক। Html এ ব্যবহার করেছি। আমি সমাধানের দুটি উপায় পেয়েছি:

  1. $ কন্ট্রোলারপ্রাইডার.ইলিট গ্লোবালস () সেট করে, আমি সেই মন্তব্যটি কৌনিক পরিবর্তন-তালিকায় পেয়েছি "পুরানো অ্যাপ্লিকেশনগুলিকে স্থানান্তরিত করার জন্য এই বিকল্পটি কার্যকর হতে পারে, তবে দয়া করে এটি নতুন ব্যবহার করবেন না!" কৌনিক উপর মূল মন্তব্য

    app.config (['$ কন্ট্রোলারপ্রভাইডার', ফাংশন ($ কন্ট্রোলারপ্রাইডার) $ ler কন্ট্রোলারপ্রাইডার.নাইট গ্লোবালস ();}]));

  2. নিয়ামক নিবন্ধনের ভুল পরিচালক

আগে

LoginController.$inject = ['$rootScope', '$scope', '$location'];

এখন

app.controller('LoginController', ['$rootScope', '$scope', '$location', LoginController]);

'অ্যাপ' অ্যাপ্লিকেশন থেকে আসে

var MyApp = {};
var app = angular.module('MyApp ', ['app.services']);
var services = angular.module('app.services', ['ngResource', 'ngCookies', 'ngAnimate', 'ngRoute']);

1

বড় ভুলের সাথে আমারও একই ত্রুটি ছিল:

appFormid.controller('TreeEditStepControlsCtrl', [$scope, function($scope){

}]);

দেখেন তো? আমি প্রথম 'স্কোপের আশেপাশে' 'ভুলে গেছি, ডান সিনট্যাক্স অবশ্যই:

appFormid.controller('TreeEditStepControlsCtrl', ['$scope', function($scope){

}]);

তাত্ক্ষণিকভাবে আমি প্রথম ত্রুটিটি দেখতে পেলাম না: " স্কোপটি সংজ্ঞায়িত করা হয়নি ", এর পরে " ত্রুটি: [এনজি: আরকিউ] আর্গুমেন্ট 'ট্রি-এডিটসটপ কন্ট্রোলস সিটিআরএল' কোনও ফাংশন নয়, অপরিজ্ঞাত হয়েছে "


0

আপনার সম্পদটি "" এ সংযুক্ত করার মতো সহজ হতে পারে এবং '' এর সাথে অভ্যন্তরে যেটুকু উক্তি প্রয়োজন?

<link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/main.css")">

হয়ে

<link rel="stylesheet" media="screen" href="@routes.Assets.at('stylesheets/main.css')">

যা পার্সিংয়ের সাথে কিছু সমস্যা তৈরি করতে পারে


0

এই সমস্যাটি সমাধান করার জন্য, আমাকে আবিষ্কার করতে হয়েছিল যে আমি কৌণিক রুটের ঘোষণায় নিয়ন্ত্রণকারীর নাম ভুল বানান দিয়েছিলাম:

.when('/todo',{
            templateUrl: 'partials/todo.html',
            controller: 'TodoCtrl'
        })

0

আমার ক্ষেত্রে এটি একটি সাধারণ টাইপ ছিল index.html:

<script src="assets/javascript/controllers/questionssIndexController.js"></script>

এটা করা উচিত ছিল

<script src="assets/javascript/controllers/questionsIndexController.js"></script>

sনিয়ামকের নামে অতিরিক্ত ছাড়াই ।


0

এখানে ক্রোম ব্যবহার করে এটি ব্রাউজারের ক্যাশে পরিণত হয়েছে। পরিদর্শন (উপাদান) এর অধীনে কেবল "অক্ষম ক্যাশে" পরীক্ষা করে আমার সমস্যার সমাধান করে problem


0

কারণ গুগলে এই পপ-আপ এর উত্তর খুঁজতে গিয়ে: "ত্রুটি: আর্গুমেন্ট '' কোনও ফাংশন নয়, অপরিবর্তিত হয়েছে"।

এটি সম্ভব যে আপনি একই মডিউলটি দু'বার তৈরি করার চেষ্টা করছেন।

অ্যাঙ্গুলার.মডিউলটি AngularJS মডিউলগুলি তৈরি, নিবন্ধকরণ এবং পুনরুদ্ধারের জন্য একটি বিশ্বব্যাপী স্থান place

একটি আর্গুমেন্ট পাস করা একটি বিদ্যমান কৌণিক পুনরুদ্ধার করে।মডিউল, যখন একাধিক যুক্তি পাস করা একটি নতুন কৌণিক তৈরি করে।

উৎস: https://docs.angularjs.org/api/ng/function/angular.module# ওভারভিউ

উদাহরণ:

angular.module('myApp', []) কোনও নির্ভরতা ইনজেকশন ছাড়াই মডিউল তৈরি করতে ব্যবহৃত হয়।

angular.module('myApp') (যুক্তি ছাড়াই) একটি বিদ্যমান মডিউল পেতে ব্যবহৃত হয়।


0

অনেকগুলি কার্যক্ষম সমাধান উপস্থিত রয়েছে যা বোঝায় যে ত্রুটির অনেকগুলি আসল কারণ রয়েছে suggest

আমার ক্ষেত্রে আমি নিয়ামকটিকে এখানে ঘোষণা করি নি app/index.html:

<scipt src="src/controllers/controller-name.controller.js"></script>

ত্রুটি চলে গেছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.