Angularjs 未捕获的TypeError:angular.module不是当前的函数

Angularjs 未捕获的TypeError:angular.module不是当前的函数,angularjs,Angularjs,这在app.js中: var angular = angular.module('ngApp', ['ngRoute']); angular.config(function($routeProvider) { $routeProvider .when('/', { templateUrl: '../templates/companies.html', controller: 'companies' }) ......... }); ang

这在
app.js
中:

var angular = angular.module('ngApp', ['ngRoute']);
angular.config(function($routeProvider) {
$routeProvider
    .when('/', {
        templateUrl: '../templates/companies.html',
        controller: 'companies'
    })
    .........
});
angular.module('ngApp').controller('companies', ['$scope', function($scope) {
    .........
}]);
这在
companys.js中:

var angular = angular.module('ngApp', ['ngRoute']);
angular.config(function($routeProvider) {
$routeProvider
    .when('/', {
        templateUrl: '../templates/companies.html',
        controller: 'companies'
    })
    .........
});
angular.module('ngApp').controller('companies', ['$scope', function($scope) {
    .........
}]);
这在
index.html
中:

<head>
    <title>Basic demo</title>
    <script src="angular.js"></script>
    <script src="angular-route.js"></script>
    <script src="js/app.js" type="text/javascript"></script>
    <script src="js/Controllers/companies.js" type="text/javascript" ></script>
</head>

基本演示
我不断地发现这个错误:

未捕获类型错误:angular.module不是函数 在公司。js:1


我做错了什么?

您的问题是您在
app.js
文件中覆盖了
angular
对象:

(function () {
    'use strict';

    var myApp = angular.module('ngApp', ['ngRoute']);
    myApp.config(function($routeProvider) {
          $routeProvider
             .when('/', {
               //....
})

})();
var angular = angular.module('ngApp', ...
尝试将
angular
变量重命名为其他变量,如
app

下面是一个plunker的例子:
使用相同版本的角度和角度路线

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular-route.js"></script>

您试图使用一个名为angular的变量。想想是什么导致了这个变量的存在。这可以在angular.js脚本中找到,然后必须首先包含该脚本


在运行angular代码时,angular还不存在。这是一个错误(请参阅开发工具的控制台窗口)。请使用相同版本的角度文件和角度路由

考虑更改标签<代码>角度
用于角度v2+<代码>angularjs用于角度v1。这将确保适当的人看到你的帖子。我只是把它缩短了,抱歉搞混了。事实上:
Oops,现在明白了。谢谢你@DeborahK@SamKirklandWA尝试将变量名从
angular
(app.js中发布的脚本的第一行)更改为类似
myApp
的其他名称。问题应该是,使用
angular
作为变量名,您覆盖了原始
angular
对象(从AngularJS库中公开的对象)@SamKirklandWA您更改了错误的对象。lorenzo是指你定义的变量。var myApp=angular.module(…),您还需要在下一行更改为myApp.config,因为这是app.Nope的新变量名。同样的事情。(@SamKirklandWA)您是否尝试过将模块命名为与“ngApp”不同的名称?angular可能已经使用了该名称。不,仍然是相同的名称。(仍然是否定的。事情是一样的。避免保留字严格使用其他naming@marked这篇文章已经有两年多的历史了。它给出的输出
Hello{{msg}
相反,它必须
Hello test message
谢谢你让我知道。我已经更新了plunker。你能告诉我们错误是什么以及你是如何纠正的吗,我正在学习阶段,谢谢。显然plunker端的某些内容已更改,Angular.js的链接已停止工作,所以我刚刚将Angular读入plunk。