Javascript 节点JS res.sendFile()不工作
我得到Javascript 节点JS res.sendFile()不工作,javascript,node.js,express,Javascript,Node.js,Express,我得到ReferenceError:main未定义 当我打开门的时候 在这里,我尝试打开位于views目录中的main.html 这是我的app.js const express = require('express'), app = express(), config = require('./config/index'), routes = require('./routes/route'); app.use(express.static(`${__dirname}/publi
ReferenceError:main未定义
当我打开门的时候
在这里,我尝试打开位于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}`)})
这是我的路线。js
const express = require('express'),
router = express.Router(),
helpers = require('../helpers/index');
router.route('/')
.get(helpers.index)
module.exports = router
var user = require('../user/user');
exports.index = (req,res)=>{
if(user.name == ''){
res.sendFile(main.html);
}
else{
res.sendFile(chat.html)
}
}
module.exports = exports;
这是我的助手/index.js
const express = require('express'),
router = express.Router(),
helpers = require('../helpers/index');
router.route('/')
.get(helpers.index)
module.exports = router
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);
致:
在没有引号的情况下,它试图将main
解释为一个Javascript对象,在该对象上查找.html
属性。但是,显然没有名为main
的对象,因此您会得到ReferenceError:main未定义
。您想在这里传递一个字符串
同样适用于res.sendFile(“chat.html”)代码>
如果文件不是此模块目录的本地文件,则需要构建一个更完整的路径来指定其位置。考虑到您显示的文件层次结构,我认为可能是这样的:
const path = require('path');
const options = {root: path.join(__dirname, "../views")};
res.sendFile("main.html", options);
更改:
res.sendFile(main.html);
致:
在没有引号的情况下,它试图将main
解释为一个Javascript对象,在该对象上查找.html
属性。但是,显然没有名为main
的对象,因此您会得到ReferenceError:main未定义
。您想在这里传递一个字符串
同样适用于res.sendFile(“chat.html”)代码>
如果文件不是此模块目录的本地文件,则需要构建一个更完整的路径来指定其位置。考虑到您显示的文件层次结构,我认为可能是这样的:
const path = require('path');
const options = {root: path.join(__dirname, "../views")};
res.sendFile("main.html", options);
除了jfriend00的答案之外,还必须使用节点中的global\uuuu dirname变量构建正确的绝对路径
因此,您的路径类似于:res.sendFile(\uu dirname+“/main.html”)
或者,根据您的文件夹结构:res.sendFile(\uu dirname+“/someadditionalfoldrs/main.html”)
或者,使用“/”构建路径(如果适用),如“/main.html” 除了jfriend00的答案之外,还必须使用node中的global\uu dirname变量构建正确的绝对路径
因此,您的路径类似于:res.sendFile(\uu dirname+“/main.html”)
或者,根据您的文件夹结构:res.sendFile(\uu dirname+“/someadditionalfoldrs/main.html”)
或者,使用“/”构建路径(如果适用),如“/main.html” 编辑:使用res.render作为测试来呈现ejs是否仍然存在该错误?res.sendFile(main.html)
应给出语法错误,因为变量main
不存在。提示:您正试图访问变量main
的属性html
。@slebetman试图说的是使main.html
成为一个字符串:res.sendFile('main.html')
edit:使用res.render作为测试来呈现ejs仍然存在该错误?res.sendFile(main.html)
应给出语法错误,因为变量main
不存在。提示:您试图访问变量main
的属性html
。@slebetman试图说的是使main.html
成为一个字符串:res.sendFile('main.html')
,在这种情况下,我得到TypeError:path必须是绝对的,或者指定res.sendFile的root
@PrashantBhardwaj-然后,您需要构建到文件位置的更完整路径。我在回答中添加了一个例子,说明了这一点。在这种情况下,我得到了TypeError:path必须是绝对的,或者指定res.sendFile的root
@PrashantBhardwaj-然后,您需要构建一个到文件位置的更完整路径。我在回答中添加了一个例子,说明了这一点。