我正在尝试在heroku上部署我的angularjs应用程序。 我按照heroku给出的步骤。 但是当我看着日志时,我有这个:
/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 未定义2014-03-05T11:05:09.266533 + 00:00 app [web.1]:at 宾语。 (/app/app/scripts/app.js:3:1) 2014-03-05T11:05:09.266533 + 00:00 app [web.1]:在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]:在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]:启动时 (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
如果您有任何想法...... 提前谢谢。
答案 0 :(得分:2)
app.js
是一个配置AngularJS的文件。它不是像express
这样的网络服务器。您需要一台Web服务器来为Angular应用程序提供服务。为此,请创建一个新的web.js
文件,以启动为app
或您的dist
目录提供服务的网络服务器。
您需要使用npm安装express
和gzippo
才能完成这项工作。
以下是web.js
提供app
文件夹的示例:
'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
文件夹,您应该提供使用dist
命令生成的grunt
文件夹。查看this buildpack我写的是在heroku上部署角度应用程序,如果你使用grunt和bower来构建应用程序,它将为你处理一切。
答案 1 :(得分:2)
Heroku在地址中使用http
读取CDN时遇到问题。因此,在您的项目中,从您的所有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>
答案 2 :(得分: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>
它有效!
更新: 看起来问题出在&#39; http:&#39; src的一部分,而不是初始链接。不知道为什么heroku无法处理那里的http,但只是摆脱它。
答案 3 :(得分:0)
如果删除链接的http部分,则允许服务器在http或https之间进行选择。这适用于所有CDN。
一般情况下,我建议使用此方法确定链接以//whatever.com
而不是http://whatever.com
开头,因为您永远不知道链接何时会更改为https,反之亦然。
答案 4 :(得分:0)
在heroku上托管你的angular js web应用程序时,问题出现在CDN上。 Heroku在使用 http
读取CDN时遇到问题因此,请从角度CDN中删除http 并将其写为
<script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.2/angular.js"></script>