Angularjs - TypeError:路径必须是绝对路径或指定根到 res.sendFile
Posted
技术标签:
【中文标题】Angularjs - TypeError:路径必须是绝对路径或指定根到 res.sendFile【英文标题】:Angularjs - TypeError: path must be absolute or specify root to res.sendFile 【发布时间】:2015-01-14 08:32:16 【问题描述】:我正在尝试使用 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 must be absolute or指定root to 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)
有人有什么建议吗?任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:var path = require('path');
res.sendFile(path.join(__dirname, './public', 'main.html'));
【讨论】:
【参考方案2】:试试这个:
res.sendfile(__dirname + '/public/main.html');
你必须指定一个绝对路径(以/开头)
【讨论】:
感谢您的回复。我试过了,错误信息仍然存在。非常沮丧! 可能是因为 windows-filesystem... 记录 __dirname 的输出 - 您有可能必须使用 windows-separators (__dirname + '\\public\\main.html')? 【参考方案3】:您应该将 get('*') 函数中的路径更改为绝对路径:
res.sendfile('public/main.html');
您可以使用 express'__dirname
。
【讨论】:
【参考方案4】:确保您访问的是相对于当前工作目录的公共目录。 以下更改应该适用于您的情况
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);
【讨论】:
以上是关于Angularjs - TypeError:路径必须是绝对路径或指定根到 res.sendFile的主要内容,如果未能解决你的问题,请参考以下文章
angularJS + mongoose:TypeError:无法读取未定义的属性“模型”
AngularJS - TypeError: v2.[xxxx] 不是函数
AngularJS 错误:TypeError:v2.login 不是函数
AngularJS指令元素方法绑定-TypeError:无法使用'in'运算符在1中搜索'functionName'