我正在尝试使用Express来路由页面,但似乎无法从主页进行路由。我将HTML用作视图引擎,感觉一切都设置正确,但是我看到了错误: “ TypeError:路径必须是绝对路径或将根目录指定为res.sendFile”
这是我的文件结构:
root
-public
--images
--index.html
--main.css
--sponsors.html
--team.html
app.js
我尝试了多种文件路由,即res.render与res.sendFile。
var express = require("express")
var app = express()
const port = 3000
var http = require("http")
const path = require('path')
app.set("view engine", "html")
app.listen(port, () => console.log(`Example app listening on port
${port}!`))
app.use(express.static(__dirname + '/public'));
app.get('/sponsors', function(req, res) {
res.sendFile('sponsors')
})
app.get('/', function(req, res) {
res.sendFile('index')
})
app.get('/team', function(req, res) {
res.sendFile('team')
})
答案 0 :(得分:0)
要从视图引擎进行渲染,请使用res.render()
,而不要使用res.sendFile()
。
而且,您的视图引擎将需要能够在视图引擎的路径中找到具有该名称和适当文件扩展名的文件。
如果要在不使用视图引擎的情况下使用res.sendFile()
,则必须指定实际文件名或包含root
选项以告知其查找位置。您还必须在文件名上使用实际的文件扩展名。
答案 1 :(得分:0)
删除以下路由方法。
const signIn = (authProvider) => app.auth().signInWithPopup(googleAuthProvider)
.then(user => ({ type: 'SIGNED_IN', payload: user }));
export const fetchAuthStatus = action$ =>
action$.pipe(
ofType('AUTH_STATUS_CHECKED'),
switchMap(() => authState(app.auth())),
switchMap(user => user // <-- switchMap handle Promises or Observables
? of({ type: 'SIGNED_IN', payload: user }) // <-- returning an observable
: signIn(googleAuthProvider) // <-- returning a promise
),
catchError(error => console.log('problems signing in'))
);
将默认路径更新为您已经编写的静态方法。
of