在ng-app导致nomod之后加载angularjs模块

时间:2016-02-19 17:33:52

标签: angularjs seo phantomjs ng-app

我已经安装了phantomjs(因为我试图让系统让我的网站有角度可抓取),而且我已经停留在" nomod"仅在phantomjs服务器上发生的错误(实时版本工作正常)。

<html lang="{{lang}}" itemscope itemtype="http://schema.org/WebPage" ng-app="myApp" class="no-js">
<base href="/">
 <head>
 <meta name="fragment" content="!">
 </head>
  <body>
  ....
    <!-- build:js(.) scripts/vendor.js -->
    <!-- bower:js -->
     <script src="bower_components/angular/angular.js"></script>
      ........
    <!-- endbower -->
    <script></script>
    ....
    <!-- endbuild -->

    <!-- build:js({.tmp,app}) scripts/scripts.js -->
      <script src="scripts/app.js"></script> 
      loading controllers
       ....
    <!-- endbuild -->

  </body>
</html>

对于app.js

'use strict';
angular
  .module('myApp', [
    'ngAnimate',
    'ngAria',
    ....
  ])
.filter()....
.config(function ($routeProvider, $stateProvider, $urlRouterProvider, $authProvider, UIRouterMetatagsProvider) {....})
.config(function($locationProvider) {
            // use the HTML5 History API
            $locationProvider.html5Mode(true);
            requireBase: false;
            $locationProvider.hashPrefix('!')
  });

当我从phantomjs ng-app访问时,在myApp初始化之前调用,我尝试使用手动引导启动应用程序但没有成功。 如果我尝试在不调用ng-app的情况下加载控制器,我仍然会收到错误,因为myApp模块在加载所有控制器后以某种方式创建。

希望有人能帮忙...... 非常感谢你。

1 个答案:

答案 0 :(得分:0)

我也得到了名字错误。在我的情况下,这是因为我的控制器中有“const”声明。

将“const”改为“var”解决了这个问题。

我的错误是:

Error: [$injector:modulerr] http://errors.angularjs.org/1.3.15/$injector/modulerr?p0=myAppName&p1=[$injector:nomod] http://errors.angularjs.org/1.3.15/$injector/nomod?p0=myAppName

这是一篇相关文章,解释了PhantomJS(通过Karma)和“const”的问题。 https://github.com/karma-runner/karma/issues/1621