nodejs表达具有角度资源的sendFile

时间:2017-06-06 07:56:53

标签: javascript angularjs node.js express

我有我的index.html,当我点击一个按钮时,它会调用一个使用$ resource的角度服务。

var serviceRest = $resource(URL_API, null,
    {
       "connect" : { method: "GET", url: "http://localhost/login"}
     });

然后在我的expressJS路线中,我有这个:

router.get('/',function(req,res){
    console.log("Hi there");
    res.sendFile('../public/views/login.html', {root: __dirname});
});

但它什么都没做。没有任何事情发生,但我的控制台日志显示所以我的sendFile可能是假的...我留在我的index.html。

| -- Agenda
     | -- public
          | -- views
               | -- login.html
     | -- controllers
          | -- routes.js

我的路由器文件位于./controllers,我的login.html位于./public/views

编辑:

好的,问题不是路径问题。但是,在我尝试的所有解决方案中,只有一个给了我一个好结果。

res.sendFile(path.join(__dirname, '../public/views/login.html'));

在那之后,我问自己"我在Angular Service中使用$ resource返回了什么。就在这时,我看到了connect()函数:

var serviceRest = $resource(URL_API, null,
{ 
    "connect" : { method: "GET", url: "http://localhost/login"}
});

return {

    connect: function() {
        console.log("connect");
        console.log(serviceRest.connect());
        return serviceRest.connect();

    }
}

这个console.log(serviceRest.connect());在浏览器控制台中显示了一个Promise。这是一个巨大的数组,每个元素有一个字符,包含我的login.html代码lol。有趣但不帮我哈哈

1 个答案:

答案 0 :(得分:1)

root 选项是您要从中提供文件的目录。假设您的文件夹结构如下所示:

| yourApp
  | -- public/
       | -- views/
         |-- login.html
  | -- controllers/
       | -- routes.js

尝试使用 yourApp

设置根目录
res.sendFile('public/views/login.html', {root: '../<root folder name>'});

将上面的“根文件夹名称”替换为“ public ”文件夹的父目录名称。 考虑上面的文件夹结构:

res.sendFile('public/views/login.html', {root: '../yourApp'});