gpt4 book ai didi

javascript - Node JS res.sendFile() 不工作

转载 作者:行者123 更新时间:2023-11-30 07:53:14 27 4
gpt4 key购买 nike

我收到 ReferenceError: main is not defined当我打开 http://localhost:3000/

这里我尝试打开位于views目录下的main.html

这是我的 app.js

const express = require('express'),
app = express(),
config = require('./config/index'),
routes = require('./routes/route');

app.use(express.static(`${__dirname}/public`));
app.use(express.static(`${__dirname}/views`));
app.use('/',routes);
app.listen(config.port,()=>{
console.log(`Listing at port ${config.port}`)})

这是我的 route.js

const express = require('express'),
router = express.Router(),
helpers = require('../helpers/index');

router.route('/')
.get(helpers.index)

module.exports = router

这是我的 helpers/index.js

var user = require('../user/user');

exports.index = (req,res)=>{
if(user.name == ''){
res.sendFile(main.html);
}
else{
res.sendFile(chat.html)
}
}

module.exports = exports;

目录结构

>helpers
>index.js
>routes
>route.js
>user
>user.js
>views
>main.html
>chat.html
app.js
pacakage.json

最佳答案

改变:

res.sendFile(main.html);

到:

res.sendFile("main.html");

如果没有引号,它会尝试将 main 解释为一个 Javascript 对象,并在其中查找 .html 属性。但是,显然没有名为 main 的对象,因此您会得到 ReferenceError: main is not defined。你想在这里传递一个字符串。

同样适用于 res.sendFile("chat.html");


如果文件不在该模块的本地目录中,那么您需要构建一个更完整的路径来指定它们的位置。鉴于您显示的文件层次结构,我认为这可能是这样的:

const path = require('path');
const options = {root: path.join(__dirname, "../views")};

res.sendFile("main.html", options);

关于javascript - Node JS res.sendFile() 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47665797/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com