Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 节点JS res.sendFile()不工作_Javascript_Node.js_Express - Fatal编程技术网

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-然后,您需要构建一个到文件位置的更完整路径。我在回答中添加了一个例子,说明了这一点。