我收到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
这是我的助手/ 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
答案 0 :(得分:2)
变化:
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);
答案 1 :(得分:1)
var user = require('../user/user');
var path = require('path');
exports.index = (req,res)=>{
if(user.name == ''){
res.sendFile(path.resolve('views/main.html'));
}
else{
res.sendFile(path.resolve('views/chat.html'))
}
}
module.exports = exports;
答案 2 :(得分:1)
除了jfriend00的回答,您还必须使用节点中的全局 __ dirname 变量构建正确的绝对路径。
所以你的道路就像:class B {
int vf;
static int sf;
B(int i){
vf = i;
sf = i+1;
}
}
class C extends B{
int vf;
static int sf;
C (int i) {
super(i+20);
vf = i;
sf = i+2;
}
}
class D extends C {
int vf;
D(int i) {
super(i+40);
vf = i;
sf = i+4;
}
static void print(int a, int b) {
System.out.println(a + " " + b);
}
static void print(int a, int b, int c) {
System.out.println(a + " " + b + " " + c);
}
public static void main(String[] args) {
C c1 = new C(100); // c1 has type C; object has class C
B b1 = c1; // b1 has type B; object has class C
print(C.sf, B.sf); // 102 121
print(c1.sf, b1.sf); // 102 121
print(c1.vf, b1.vf); // 100 120
System.out.println("===================");
C c2 = new C(200);
B b2 = c2;
print(c2.sf, b2.sf); // 202 221
print(c2.vf, b2.vf); // 200 220
print(c1.sf, b1.sf); // 202 221
print(C.sf, B.sf); //202 221
System.out.println("===================");
D d3 = new D(300);
C c3 = d3;
B b3 = d3;
**print(D.sf, C.sf, B.sf); //304 342 361
print(d3.sf, c3.sf, b3.sf); //304 342 361**
print(d3.vf, c3.vf, b3.vf); //300 340 360
}
}
或者,取决于您的文件夹结构:res.sendFile(__dirname + "/main.html")
或者使用" ./"构建路径;如果适用,例如" ./ main.html";