Javascript Angularjs-TypeError:路径必须是绝对路径或指定res.sendFile的根
我正在尝试用angularjs创建一个联系人应用程序。我在项目的根目录中创建了一个名为server.js的文件。代码如下: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
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')?