【问题标题】:nodejs expressjs sendFile with angular resource带有角度资源的nodejs expressjs sendFile
【发布时间】:2017-06-06 07:56:53
【问题描述】:

我有我的 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'));

之后,我问自己“我用 $resource 在 Angular 服务中返回了什么。而此时我看到了我的 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 代码哈哈。好笑但帮不了我哈哈

【问题讨论】:

  • 你配置路由器来处理/login吗?
  • “进程/登录”是什么意思?是的,注意 router.get('/'.... 但它真的是 /login,我的 console.log("Hi there"); 当我点击按钮时显示。所以它进入 router.get
  • 如果是你的要求,我的 server.js 上有这个:app.use('/login', login);
  • 您的 login.html 在 /public/views 但您发送的是 ../public/login.html???
  • 哦,是的,谢谢。但是修改后就不行了……

标签: javascript angularjs node.js express


【解决方案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'});

【讨论】:

  • 在我的例子中,“yourApp”文件夹的名称是“Agenda”。所以我试试你对我说的: res.sendFile('public/views/login.html', {root: '../Agenda'});而且它不工作......我也尝试过像这样的真正绝对路径 res.sendFile('C:\\Users\\.....');和同样的结果.. 这个 res.sendFile 让我很生气
  • 我编辑了我的问题,我有更多关于问题的详细信息
猜你喜欢
  • 1970-01-01
  • 2012-10-27
  • 2014-06-01
  • 2017-06-15
  • 2018-11-23
  • 1970-01-01
  • 1970-01-01
  • 2016-05-10
  • 2014-12-09
相关资源
最近更新 更多