Angularjs应用程序运行在本地主机上,而不是在heroku上
angularjs app running on localhost but not on heroku
我的angularjs应用程序在本地主机上运行得很好。但当我将它部署到heroku时,应用程序显示出来,但一些功能,主要是前端到后端通信失败。我怀疑这是因为我使用了http://localhost:3000
而不是我的真实网站地址:https://mytestapp.herokuapp.com
。有人能让我知道我应该做什么让这个应用程序在heroku上运行?后端与前端通信,使登录/注册功能运行。目前,当我登录或注册时,我得到一个错误,好像什么都没有发生。
我运行grunt build
,并从.gitignore
中删除/dist
,并有一个procfile像web: node api.js
。
和我的包。Json文件如下:
"version": "1.0.0",
"main": "Gruntfile.js",
"directories": {
"test": "test"
},
"scripts": {
"start": "nf start",
"test": "echo '"Error: no test specified'" && exit 1"
},
我还在我的app.config.js中声明了一个常量,如:
.constant('API_URL', 'http://localhost:3000/')
我使用API_URL
设置我的登录/注册authproviders.
和在我的gruntfile.js中,我也有以下几位:
connect: {
options: {
port: 9000,
// Change this to '0.0.0.0' to access the server from outside.
hostname: 'localhost',
livereload: 35729
},
livereload: {
options: {
open: true,
middleware: function (connect) {
return [
connect.static('.tmp'),
connect().use(
'/bower_components',
connect.static('./bower_components')
),
connect().use(
'/app/styles',
connect.static('./app/styles')
),
connect.static(appConfig.app)
];
}
}
},
test: {
options: {
port: 9001,
middleware: function (connect) {
return [
connect.static('.tmp'),
connect.static('test'),
connect().use(
'/bower_components',
connect.static('./bower_components')
),
connect.static(appConfig.app)
];
}
}
},
更新我试图在这个控制器中实现它,但没有成功:当我实现Yoni的解决方案时,我不再得到projectlist
,它显示了一个空页面。为什么呢?
'use strict';
angular.module('ModuleV11App')
.controller('ProjectlistCtrl', function ($http, $scope, API_URL, alert) {
return $http.get($rootScope.server.url + '/projectlist').success(function (projectlist) {
$scope.projectlist = projectlist;
}).error(function (err) {
alert('warning', "Unable to get projects, please login first", err.message);
})
});
但是,它可以工作,当它像这样:
return $http.get(API_URL + 'projectlist').success(function (projectlist) {
使用$location服务
你可以这样做:
angular.module('mainModule', [])
.run(function($location,$rootScope) {
$rootScope.server = {url: location.protocol + '//' + location.hostname + (location.port ? ':' + location.port : '')};
})
然后你可以在你的前端代码的任何地方有这样的调用:
$http.get($rootScope.server.url + '/whatever');
相关文章:
- chrome扩展更改主机/域警告
- 本地主机Typekit JS
- Meteor应用程序无法运行-对象#<编译器>没有方法'主机'
- nodejs和heroku:抛出新错误(setHeader()需要“名称”和“值”');
- Rails:如何获取当前用户'使用Heroku时的时区
- 如何使用Wordpress'RESTApi访问本地主机上的数据
- gmap4rails在本地工作,但没有;不要出现在heroku上
- Javascript库创建类似heroku仪表板的应用程序
- Rails 4资产管道Heroku生产javascript参考问题
- 部署heroku问题
- 用于本地主机上进程间通信的Javascript中的UDP
- 本地主机与部署的角度承诺差异
- chart.js在我的本地主机上运行良好,但无法在线运行
- 可以'由于CORS问题,无法访问Heroku上的Flask API
- 通过socket.io与heroku应用程序进行通信
- 造型:主机的聚合物元素与Javascript
- 指定来自不受信任的主机的脚本的哈希
- Rails/Bootstrap Navbar/j查询本地主机和已部署(Heroku)之间的差异
- Heroku Git推送主机错误
- Rails: jQuery在本地主机上工作,但不能在heroku上生产