2014-03-05 85 views
4

我试图在heroku上部署我的angularjs应用程序。 我遵循了heroku给出的步骤。 但是,当我寻找的日志我有这样的:在Heroku上部署angularjs应用程序:模块角度未找到

/app/app/scripts/app.js:3 2014-03-05T11:05:09.262151+00:00 app[web.1]: angular.module('angularuiprojectApp', [ 2014-03-05T11:05:09.262151+00:00 app[web.1]:^ 2014-03-05T11:05:09.266533+00:00 app[web.1]: ReferenceError: angular is not defined 2014-03-05T11:05:09.266533+00:00 app[web.1]: at Object. (/app/app/scripts/app.js:3:1) 2014-03-05T11:05:09.266533+00:00 app[web.1]: at Module._compile (module.js:456:26) 2014-03-05T11:05:09.266533+00:00 app[web.1]: at Object.Module._extensions..js (module.js:474:10) 2014-03-05T11:05:09.266533+00:00 app[web.1]: at Module.load (module.js:356:32) 2014-03-05T11:05:09.266533+00:00 app[web.1]: at Function.Module._load (module.js:312:12) 2014-03-05T11:05:09.266533+00:00 app[web.1]: at Function.Module.runMain (module.js:497:10) 2014-03-05T11:05:09.266533+00:00 app[web.1]: at startup (node.js:119:16) 2014-03-05T11:05:09.266533+00:00 app[web.1]: at node.js:902:3 2014-03-05T11:05:09.742460+00:00 app[web.1]: /app/app/scripts/app.js:3

我不明白为什么Heroku的不知道角。

这里是我的app.js的代码:

angular.module('angularuiprojectApp', [ 
    'ngCookies', 
    'ngResource', 
    'ngSanitize', 
    'ngRoute','ui.bootstrap' 
]) 
    .config(function ($routeProvider) { 
    $routeProvider 
     .when('/', { 
     templateUrl: 'views/main.html', 
     controller: 'MainCtrl' 
     }) 
     .otherwise({ 
     redirectTo: '/' 
     }); 
    }); 

我procfile内容是:

web: node app/scripts/app.js

如果您有任何想法... 预先感谢您。

回答

2

app.js是一个配置AngularJS的文件。它不是像express这样的网络服务器。您需要一个Web服务器来为您的Angular应用程序提供服务。为此,请创建一个新的web.js文件,该文件启动服务于您的appdist目录的网络服务器。

您将需要安装expressgzippo使用npm来完成这项工作。

这里是服务于app文件夹中的web.js例如:

'use strict'; 

var gzippo = require('gzippo'); 
var express = require('express'); 
var nodeApp = express(); 

nodeApp.use(express.logger('dev')); 
nodeApp.use(gzippo.staticGzip('' + __dirname + '/app')); 
nodeApp.listen(process.env.PORT || 5000); 

顺便说一句,服务不建议app文件夹,你应当把正在使用grunt命令生成的dist文件夹。查看this buildpack我写过在heroku上部署角色应用程序,如果您使用grunt和bower构建应用程序,它将为您处理所有事情。

+0

伟大buildpack nknj! :) – Leon

0

我有一个node.js应用程序在本地工作正常,但角度不会在Heroku上工作。我不得不在我的index.html中更改此行,以便heroku加载角度。我换成

<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.10/angular.min.js"></script> 

<script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.3/angular.min.js" type="text/javascript" charset="utf-8"></script> 
<script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.3/angular-route.min.js" type="text/javascript" charset="utf-8"></script> 

和它的工作!

更新: 看起来问题在于src的'http:'部分,而不是初始链接。不知道为什么heroku无法处理http,但只是摆脱它。

0

如果删除链接的http部分,则允许服务器在http或https之间进行选择。这适用于所有CDN。

一般来说,我推荐这种方法ok链接开始于//whatever.com而不是http://whatever.com,因为你永远不知道链接何时会改变为https,反之亦然。

2

Heroku在阅读CDN时遇到问题,http在地址中。因此,在您的项目中,从您的所有CDN网址中删除http

例如:

如果您有:

<pre>http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.2/angular.js"></pre> 

将其替换为:

<pre>//cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.2/angular.js"></pre>

0

,而托管在Heroku上的角的js web应用程序中,问题出现在CDN中。 Heroku的有HTTP

所以阅读CDN一个问题,从您的角度CDN 删除HTTP和它写成

<script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.2/angular.js"></script>

相关问题