正确的expressjs和angular $ http路径

时间:2016-06-16 10:39:00

标签: angularjs http express server

我的项目结构如下:

  • node_modules
  • server.js
  • 公共
    • CSS
    • 脚本
    • 的index.html
    • 模块

在模块dir中

  • 验证
  • 主页
    • 视图
    • controllers.js

在这种情况下,两个重要的文件是:

  1. server.js
  2. controllers.js
  3. 在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"目录?

2 个答案:

答案 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”的情况下运行