Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angularjs-TypeError:路径必须是绝对路径或指定res.sendFile的根_Javascript_Angularjs_Node.js - Fatal编程技术网

Javascript Angularjs-TypeError:路径必须是绝对路径或指定res.sendFile的根

Javascript Angularjs-TypeError:路径必须是绝对路径或指定res.sendFile的根,javascript,angularjs,node.js,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'); }) .l

我正在尝试用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:路径必须为绝对路径或指定res.sendFile的根 位于ServerResponse.sendFile(D:\Workspace\contacts\node\u modules\express\lib\response.js:389:11) 位于D:\Workspace\contacts\server.js:7:7 在Layer.handle[作为handle\u请求](D:\Workspace\contacts\node\u modules\express\lib\router\Layer.js:82:5) 下一步(D:\Workspace\contacts\node\u modules\express\lib\router\route.js:100:13) 在Route.dispatch(D:\Workspace\contacts\node\u modules\express\lib\router\Route.js:81:3) 在Layer.handle[作为handle\u请求](D:\Workspace\contacts\node\u modules\express\lib\router\Layer.js:82:5) 位于D:\Workspace\contacts\node\u modules\express\lib\router\index.js:235:24 位于Function.proto.process_参数(D:\Workspace\contacts\node\u modules\express\lib\router\index.js:313:12) 位于D:\Workspace\contacts\node\u modules\express\lib\router\index.js:229:12 在Function.match_层(D:\Workspace\contacts\node_modules\express\lib\router\index.js:296:3)

有人有什么建议吗?任何帮助都将不胜感激。

试试以下方法:

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

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

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

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

您可以使用express'
\uuu dirname

确保访问相对于当前工作目录的公共目录。
var path = require('path');  

res.sendFile(path.join(__dirname, './public', 'main.html'));
以下更改应适用于您的情况

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);

谢谢你的回复。我试过了,错误信息仍然存在。非常令人沮丧!可能是因为windows文件系统。。。记录uuDirName的输出-您可能必须使用windows分隔符(uuuDirName+'\\public\\main.html')?