Angularjs - TypeError:path必须是绝对路径或指定root到res.sendFile

时间:2014-11-17 12:15:48

标签: javascript angularjs node.js

我正在尝试使用angularjs创建一个联系人应用。我在项目的根目录中创建了一个名为server.js的文件。这是代码:

var express = require('express'),
app     = express();

app
    .use(express.static('./public'))
    .get('*', function (req, res) {
        res.sendfile('public/main.html');
    })
    .listen(3000);

当我转到localhost:3000时,这是出现的错误消息。

  

TypeError:path必须是绝对路径或指定root到res.sendFile      在ServerResponse.sendFile(D:\ Workspace \ contacts \ node_modules \ express \ lib \ response.js:389:11)      在D:\ Workspace \ contacts \ server.js:7:7      在Layer.handle [as handle_request](D:\ Workspace \ contacts \ node_modules \ express \ lib \ router \ layer.js:82:5)      在下一个(D:\ Workspace \ contacts \ node_modules \ express \ lib \ router \ route.js:100:13)      在Route.dispatch(D:\ Workspace \ contacts \ node_modules \ express \ lib \ router \ route.js:81:3)      在Layer.handle [as handle_request](D:\ Workspace \ contacts \ node_modules \ express \ lib \ router \ layer.js:82:5)      在D:\ Workspace \ contacts \ node_modules \ express \ lib \ router \ index.js:235:24      在Function.proto.process_params(D:\ Workspace \ contacts \ node_modules \ express \ lib \ router \ index.js:313:12)      在D:\ Workspace \ contacts \ node_modules \ express \ lib \ router \ index.js:229:12      在Function.match_layer(D:\ Workspace \ contacts \ node_modules \ express \ lib \ router \ index.js:296:3)

有没有人有任何建议?任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:2)

var path = require('path');  

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

答案 1 :(得分:1)

试试这个:

res.sendfile(__dirname + '/public/main.html');

您必须指定绝对路径(以/开头)

答案 2 :(得分:0)

您应该将get('*')函数中的路径更改为绝对路径:

res.sendfile('public/main.html');

您可以使用快递'__dirname

答案 3 :(得分:0)

确保您访问相对于当前工作目录的公共目录。 以下更改应适用于您的情况

var express = require('express'),
    app = express(),
    path = require('path'),
    publicDir = path.join(__dirname, 'public');

app.use(express.static(publicDir))
app.get('*', function(req, res){
    res.sendFile(path.join(publicDir, 'main.html'));
}).listen(3000);