【问题标题】:"Failed to instantiate module 'app' due to" in angular and mean stack角度和平均堆栈中的“由于”无法实例化模块'app'
【发布时间】:2015-01-20 18:40:47
【问题描述】:

所以我最近用 express nodejade 和 angular 玩了 mean stack;实际上我认为翡翠存在某种问题;我为复杂性道歉,但我真的想不通,希望从外面有一些不同的看法;所以是这样的:

消息本身:

Uncaught Error: [$injector:modulerr] Failed to instantiate module app due to:

Error: [$injector:nomod] Module 'app' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.

http://errors.angularjs.org/1.3.3/$injector/nomod?p0=app
    at https://ajax.googleapis.com/ajax/libs/angularjs/1.3.3/angular.js:63:12

好的,我们转到 Angular js 的 63 个:return new ErrorConstructor(message); -> 好吧,它什么也没说,但有些想法是问题真的隐藏在任何地方;

    at https://ajax.googleapis.com/ajax/libs/angularjs/1.3.3/angular.js:1747:17

去这个 1747 或者:throw $injectorMinErr('nomod', "Module '{0}' is not available! You either misspelled " + -> 在这里也没什么可理解的;那你怎么看?

    at ensure (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.3/angular.js:1671:38)
    at module (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.3/angular.js:1745:14)
    at https://ajax.googleapis.com/ajax/libs/angularjs/1.3.3/angular.js:4041:22
    at forEach (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.3/angular.js:322:20)
    at loadModules (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.3/angular.js:4025:5)
    at createInjector (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.3/angular.js:3951:11)
    at doBootstrap (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.3/angular.js:1434:20)
    at bootstrap (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.3/angular.js:1455:12)
http://errors.angularjs.org/1.3.3/$injector/modulerr?p0=app&p1=Error%3A%20%….googleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.3.3%2Fangular.js%3A1455%3A12) 

文件结构:

_client
   vendor //for bower installations
   styles 
   application
      angularCore.js

_server
   views
      core.jade
      states
         home.html

server.js

>

server.js :


==stuff===

app.set('views', path.join(__dirname, '_server/views'));
app.set('view engine', 'jade');

app.use(express.static(path.join(__dirname, '_client/')));

app.get('/states/:Path', function(req, res) {
   res.render('states/' + res.params.Path + '.html');
 });

 app.get('*', function(req, res) {
   res.render('core');
   console.log(res);
 });

==stuff==

_server/views/core.jade:

doctype html
html(lang="en")
  head
    link(rel="shortcut icon", href="favicon.ico", type="image/x-icon")
    link(rel="stylesheet", href="styles/bootstrap.css")
    link(rel="stylesheet", href="vendor/toastr/toastr.min.css")
    link(rel="stylesheet", href="styles/core.css")

  body(ng-app='app')
    div(ng-view)
     h1 Some text

    script(type='text/javascript', src='vendor/jquery/dist/jquery.min.js')
    script(type='text/javascript', src='https://ajax.googleapis.com/ajax/libs/angularjs/1.3.3/angular.js')
    script(type='text/javascript', src='http://ajax.googleapis.com/ajax/libs/angularjs/1.3.3/angular-route.js')
    script(type='text/javascript', src='http://ajax.googleapis.com/ajax/libs/angularjs/1.3.3/angular-resource.js')
    script(type='text/javascript', src='./application/angularCore.js')

_client/application/angularCore.js:

var app = angular.module('app', ['ngResource', 'ngRoute']);

app.config(function($locationProvider, $routeProvider) {
  $locationProvider.html5mode(true);
  $routeProvider
    .when('/', {
      templateUrl: '/states/home',

所以,因为我看到的问题 states/home.html 没有加载到网络选项卡中;

      controller: 'controllerMain'
    });
  }


app.controller('controllerMain', function($scope) {
  $scope.myVar = "Hello peolm";
});

_server/views/states/home.html:

<h1>That's the state home</h1>
<h2>{{myVar}}</h2>

所以app的逻辑是去localhost:3030到'/',然后由于angular的

when('/', {
      templateUrl: '/states/home',

和快递的

app.get('/states/:Path', function(req, res) {
   res.render('states/' + res.params.Path);
 });

收到 home.html,我们很好,但是 home.html 没有渲染,甚至没有加载,我不知道是因为什么; 浏览器、客户端下载的所有文件,“home.html”除外;

所以这是主要问题:都下载了,我为什么找不到'app'模块?

【问题讨论】:

  • 您的angularCore.js 文件是在_client/app/ 目录中还是在/application/ 中?错误很明显,它无法加载应用程序模块,这似乎表明脚本没有正确加载。在 src 路径中看到 ./ 是不寻常的。
  • 哦,那是我的错,它实际上在“应用程序”中;
  • 你的 javascript 文件的 src 应该是相对于应用程序的根目录,而不是相对于玉文件,所以 ./ 似乎没有意义。如果您浏览到http://youserver.com/application/angularCore.js,是否可以下载 js 文件?如果是这样,我怀疑删除 . 会修复脚本加载。
  • 在开发者控制台的网络选项卡上,您应该能够看到返回 404 的文件,导致模块不可用。
  • './' 根本不进行更改,我正在尝试所有变体以找到解决方案;浏览器、客户端下载的所有文件,“home.html”除外;所以这是主要问题:全部下载,我为什么找不到'app'模块?

标签: javascript angularjs node.js express pug


【解决方案1】:

这很有趣。

问题出在这里:$locationProvider.html5mode(true);好吧,没有html5mode,而是html5Mode;

【讨论】:

    【解决方案2】:

    乍一看,我认为您在这里缺少 .html

    app.get('/states/:Path', function(req, res) { 
       res.render('states/' + res.params.Path + '.html');
    });
    

    【讨论】:

    • 我添加了,但这不是解决方案 :( 感谢您的回答,不幸的是我缺乏投票答案的声誉
    • 您是否将视图引擎添加为 app.set('view engine', 'jade');那么你不需要这个 .html 而是将 home.html 重命名为 home.jade
    • 是的,已经完成了;但后来我意识到可能是玉问题,所以我切换到 html 来渲染 Angular 的一部分交易
    猜你喜欢
    • 2023-03-22
    • 2018-07-10
    • 2017-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多