启动角度服务器时出错

时间:2015-08-17 22:55:10

标签: javascript angularjs express server sendfile

我有以下server.js文件:

var express = require('express'),
    api     = require('./api'),
    app     = express();

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

,server.js文件位于C:\ Users \ myName \ Desktop \ prodfixes \ server.js,main.html位于C:\ Users \ myName \ Desktop \ prodfixes \ public \ main.html 然后转到http://localhost:3000/并不会在屏幕上抛出错误但是在命令行上(我使用nodemon server.js来运行服务器)我收到错误:express deprecated res.sendfile:使用res .sendFile代替。那么我显然将res.send文件更改为res.sendFile但是当我刷新屏幕时出现错误:

TypeError:path必须是绝对路径或指定root到res.sendFile    在ServerResponse.sendFile(C:\ Users \ myName \ Desktop \ prodfixes \ node_modules \ express \ lib \ response.js:394:11)    在C:\ Users \ myName \ Desktop \ prodfixes \ server.js:9:7    在Layer.handle [as handle_request](C:\ Users \ myName \ Desktop \ prodfixes \ node_modules \ express \ lib \ router \ layer.js:95:5)    在下一个(C:\ Users \ myName \ Desktop \ prodfixes \ node_modules \ express \ lib \ router \ route.js:131:13)    在Route.dispatch(C:\ Users \ myName \ Desktop \ prodfixes \ node_modules \ express \ lib \ router \ route.js:112:3)    在Layer.handle [as handle_request](C:\ Users \ myName \ Desktop \ prodfixes \ node_modules \ express \ lib \ router \ layer.js:95:5)    在C:\ Users \ myName \ Desktop \ prodfixes \ node_modules \ express \ lib \ router \ index.js:277:22    在param(C:\ Users \ myName \ Desktop \ prodfixes \ node_modules \ express \ lib \ router \ index.js:349:14)    在param(C:\ Users \ myName \ Desktop \ prodfixes \ node_modules \ express \ lib \ router \ index.js:365:14)    在Function.process_params(C:\ Users \ myName \ Desktop \ prodfixes \ node_modules \ express \ lib \ router \ index.js:410:3)

对不起,我是角色和使用服务器的新手,所以任何帮助将不胜感激。感谢。

2 个答案:

答案 0 :(得分:1)

使用path.resolve应以跨平台兼容的方式解决此问题:

var express = require('express'),
    path = require('path'),
    api = require('./api'),
    app = express();

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

path.resolve将提供文件的绝对路径,以满足res.sendFile()函数的要求:

  

除非在options对象中设置了root选项,否则 path必须是a   文件的绝对路径。

http://expressjs.com/api.html

答案 1 :(得分:0)

我同意S. Buda ......看起来你似乎走错了路。错误指定" TypeError:path必须是绝对的,或者在ServerResponse.sendFile"中为res.sendFile指定root。 - 尝试使用完整路径而不是相对路径。 C:\ Users \ myName \ Desktop \ prodfixes \ public \ main.html而不仅仅是public / main.html。