2014-03-05 89 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>

相關問題