我的项目结构如下:
在模块dir中
在这种情况下,两个重要的文件是:
在server.js中我有这个功能:
app.get('/conn', function (req, res) {
db.on('error', function (err) {
res.json(err);
});
db.on('connect', function () {
res.json('database connected')
}) });
并在controllers.js中运行
$http.get('/conn').success(function (response) {
console.log(response);
});
在localhost上一切正常,但是当我把文件放在服务器上时我有这个错误:
获取http://xxxxxxxxxxxx/conn 404(未找到)
我知道问题是与server.js的链接,但是如何正确地说呢?如何制作文件路径,以及#34; public"目录?
答案 0 :(得分:0)
在controllers.js
中,您只需指定/conn
的相对路径。这在localhost上运行正常,但是当在服务器上时,用户只能访问public
文件夹中的内容。因此,当他们从计算机触发$http.get('/conn')
时,相对路径没有意义。
怎么做: 为您的http请求使用绝对URL路径。
部署到服务器时,需要从
进行更改$http.get('localhost:[portnr]/conn')
到
$http.get('http://<server-address>/conn')
我通常创建一个工厂来保存我的serverconfig:
angular
.module("app")
.factory("ServerConfig", [ServerConfig]);
function ServerConfig(){
"use strict";
var http = "http://";
var base = "localhost:8080"; //Change this to server-address when deploying.
return {
host: http + base
};
}
所以我的所有$ http请求都是这样的:
$http.get(ServerConfig.host + '/conn') // Or whatever path
答案 1 :(得分:0)
我前一段时间解决了我的问题。我遇到这个问题的原因是我的服务器文件的名称。我使用名称“server.js”,但我不知道为什么,但我的托管仅在服务器文件名称为“app.js”的情况下运行