2
votes

Comment rediriger vers une autre page à partir de la page ejs

mon code est:

window is not defined
    at eval (eval at compile (\node_modules\ejs\lib\ejs.js:618:12), <anonymous>:215:37)
    at returnedFn (\node_modules\ejs\lib\ejs.js:653:17)
    at tryHandleCache (\node_modules\ejs\lib\ejs.js:251:36)
    at View.exports.renderFile [as engine] (\node_modules\ejs\lib\ejs.js:482:10)
    at View.render (\node_modules\express\lib\view.js:135:8)
    at tryRender (\node_modules\express\lib\application.js:640:10)
    at Function.render (\node_modules\express\lib\application.js:592:3)
    at ServerResponse.render (\node_modules\express\lib\response.js:1012:7)
    at \controllers\productController.js:1274:8
    at \node_modules\mongoose\lib\model.js:4733:16
    at \node_modules\mongoose\lib\utils.js:263:16
    at \node_modules\mongoose\lib\aggregate.js:973:13
    at \node_modules\kareem\index.js:135:16
    at processTicksAndRejections (internal/process/task_queues.js:82:9)

Remarque: sans passer res, req du contrôleur node.js

quand j'ajoute ce code:

window.location.replace("http://stackoverflow.com");

cela ne fonctionne pas pour moi. affichez-moi l'erreur:

<%
var result = [];
if(result.length>0)
{
 //do nothing
}
else
{
 //redirect page to "/product-not-found"
 //window.location.replace("http://stackoverflow.com"); is not working
}
%>


1 commentaires

ça ne marche pas @SiddharthDas je l'ai déjà essayé ce n'est pas js c'est la page "product.ejs"


3 Réponses :


1
votes

Voici un hack que vous pouvez essayer

1-Créez un fichier appelé redirect.ejs avec le code suivant

<%
var result = [];
if(result.length>0)
{
 //do nothing
}
else
{
%>
<%- include('redirect.ejs')%>// redirect to
 <%
}%>

2-Appelez ce fichier comme partiel dans votre code comme ça

<!DOCTYPE HTML>
<html lang="en-US">
    <head>
        <meta charset="UTF-8">
        <meta name="robots" content="noindex, nofollow">
        <meta http-equiv="refresh" content="1;url=<%= url %>">
        <script type="text/javascript">
            window.location.href = "google.com"
        </script>
    </head>
    <body>
        If you are not redirected automatically, <a href="<%= url %>">click here</a>.
    </body>
</html>

Faites-moi savoir si cela fonctionne pour vous


2 commentaires

c'est une erreur show me: partial n'est pas défini à eval (eval at compile (\ node_modules \ ejs \ lib \ ejs.js: 618: 12), : 219: 7) à returnedFn (\ node_modules \ ejs \ lib \ ejs.js: 653: 17) sur tryHandleCache (\ node_modules \ ejs \ lib \ ejs.js: 251: 36) sur View.exports.renderFile [comme moteur] (\ node_modules \ ejs \ lib \ ejs.js: 482: 10) à View.render (\ node_modules \ express \ lib \ view.js: 135: 8) à tryRender (\ node_modules \ express \ lib \ application.js: 640: 10) à Function.render (\ node_modules \ express \ lib \ application.js: 592: 3)


Heureux d'aider @NiravSutariya



0
votes

Jusqu'à présent, je n'ai pas trouvé de moyen de rediriger d'une page ejs vers une autre page, SI vous utilisez des données de la variable que vous devriez utiliser dans cette page ejs.

Ma solution est donc de rediriger du côté serveur, plutôt que du côté client. Dans l'exemple ci-dessous, il existe une page de connexion qui, une fois la connexion réussie, restitue la page du compte et, en cas de connexion infructueuse, la rend à nouveau.

Fichier: node.js code>

//Profile page
app.get('/account', function (req, res) {
    if(req.session.user){
        // user can access account page
        let sess = req.session;
        console.log(sess);

        res.render('account', {user: sess.user});
    }
    else{
        // user cannot access account page
        // -> display again the login page
        res.render('login');
    }
});


0 commentaires

0
votes

Je suis peut-être en retard à la fête, mais j'ai eu ce problème et voici comment je l'ai résolu:

<% if (yourBoolean) { %>
  <script> document.location.href = '/your-redirect' </script>
<% } %>

Forcer une redirection via une balise de script, avec EJS, pas une redirection de EJS.

Bon codage!


0 commentaires