Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.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文件中的ejs.renderFile出错_Javascript_Ejs - Fatal编程技术网

Javascript js文件中的ejs.renderFile出错

Javascript js文件中的ejs.renderFile出错,javascript,ejs,Javascript,Ejs,我是Node.js的新手。我在js文件中运行的以下代码出现错误:“‘发生错误:renderFile(siginin.ejs)’”。不知道为什么 ejs.renderFile('./views/signin.ejs',function(err, result) { if (!err) { res.end(result); } else { res.end('An error occurred: renderFile(siginin.

我是Node.js的新手。我在js文件中运行的以下代码出现错误:“‘发生错误:renderFile(siginin.ejs)’”。不知道为什么

ejs.renderFile('./views/signin.ejs',function(err, result) {
   if (!err) {
            res.end(result);
   }
   else {
            res.end('An error occurred: renderFile(siginin.ejs)');
            console.log(err);
   }
}))

错误:

cb不是一个函数

TypeError: cb is not a function
at Object.exports.renderFile (C:\Users\MyPC\workspace\Nodejs_Login\node_modules\ejs\lib\ejs.js:353:12)
at signin (C:\Users\MyPC\workspace\Nodejs_Login\routes\home.js:10:6)
at Layer.handle [as handle_request] (C:\Users\MyPC\workspace\Nodejs_Login\node_modules\express\lib\router\layer.js:95:5)
at next (C:\Users\MyPC\workspace\Nodejs_Login\node_modules\express\lib\router\route.js:131:13)
at Route.dispatch (C:\Users\MyPC\workspace\Nodejs_Login\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (C:\Users\MyPC\workspace\Nodejs_Login\node_modules\express\lib\router\layer.js:95:5)
at C:\Users\MyPC\workspace\Nodejs_Login\node_modules\express\lib\router\index.js:277:22
at Function.process_params (C:\Users\MyPC\workspace\Nodejs_Login\node_modules\express\lib\router\index.js:330:12)
at next (C:\Users\MyPC\workspace\Nodejs_Login\node_modules\express\lib\router\index.js:271:10)
at C:\Users\MyPC\workspace\Nodejs_Login\node_modules\express\lib\router\index.js:618:15
我在浏览器中访问此链接,发现上面的错误:

app.js:

var home = require('./routes/home'); //add label
app.get('/signin', home.signin);
这是home.js的文件:

home.js

/**
* New node file
*/
var ejs = require("ejs");
var mysql = require('./mysql');

function signin(req,res) {

ejs.renderFile('./views/signin.ejs',function(err, result) {
   // render on success
   if (!err) {
            res.end(result);
   }
   // render or error
   else {
            res.end('An error occurred: renderFile(siginin.ejs)');
            console.log(err);
   }
   });

  }


function afterSignIn(req,res)
{
// check user already exists
var getUser="select * from users where username='"+req.param("inputUsername")+"' and password='" + req.param("inputPassword") +"'";
console.log("Query is:"+getUser);

mysql.fetchData(function(err,results){
    if(err){
        throw err;
    }
    else 
    {
        if(results.length > 0){
            console.log("valid Login");
            ejs.renderFile('./views/successLogin.ejs', { data: results } , function(err, result) {
                // render on success
                if (!err) {
                    res.end(result);
                }
                // render or error
                else {
                    res.end('An error occurred: renderFile(successLogin.ejs)');
                    console.log(err);
                }
            });
        }
        else {    

            console.log("Invalid Login");
            ejs.renderFile('./views/failLogin.ejs',function(err, result) {
                // render on success
                if (!err) {
                    res.end(result);
                }
                // render or error
                else {
                    res.end('An error occurred: renderFile(failLogin.ejs).');
                    console.log(err);
                }
            });
        }
    }  
},getUser);
}

您可以在Express中将EJS设置为一个视图引擎,并使用它来代替执行相同操作的所有这些额外代码。您当前的方法更加混乱,并且没有利用Express的一些更好的部分,例如

让它在Express中运行很简单

// Tell Express to render the views from ./views
app.set('views', path.join(__dirname, 'views'));

// Set EJS as the View Engine
app.set('view engine', 'ejs');
上面的代码块将EJS设置为Express的视图引擎,并将其用于
res.render()
函数

然后简单地在你的路线上你可以做

app.get('/signin', function(req, res) {
  return res.render('signin');
});
或者您可以编辑您的
home.sign()
函数

signin(req, res) {
  return res.render('signin');
}

你能补充更多的错误吗?可能是stacktrace?我刚刚在帖子中添加了它。你能提供你的
home.js
文件吗,它说它在该文件的第10行崩溃了<代码>登录(C:\Users\MyPC\workspace\Nodejs\u Login\routes\home.js:10:6)第10行:ejs.renderFile('./views/sign.ejs',function(err,result){。你需要整个文件吗?我明白,但它说的是
cb不是一个函数
所以
home.js必须在第10行附近使用
cb
,谢谢。小东西:我用过“app.engine('html',require('ejs').renderFile);app.set('view engine','html');”get错误:错误:未指定默认引擎,也未提供扩展。在EventEmitter.render的新视图(C:\Users\MyPC\workspace\Nodejs\u Login\node\u modules\express\lib\view.js:62:11)中(C:\Users\MyPC\workspace\Nodejs\u Login\node\u modules\express\lib\application.js:569:12)。然后我使用这个(app.set('view engine','ejs');)来代替它,它可以工作。@J.C.我已经更新了我的答案,以使用
app.set('view engine','ejs'))
方法。如果这确实是答案,并且有帮助,请将其标记为答案并向上投票,以便此问题的未来读者知道这确实是标记的解决方案答案。关于向上投票,网站回答“一旦您赢得总共15个声誉,您的投票将改变公开显示的帖子分数“,因为我是stackoverflow的新用户。只需等待一段时间。@J.C.别担心,标记的答案对未来的读者来说更重要。很高兴我能提供帮助。”