#javascript #node.js #express #passport.js #ejs
#javascript #node.js #экспресс #passport.js #ejs
Вопрос:
Начните обучение node.js в последнее время я пытаюсь объединить код из разных проектов, все работает нормально, пока я не изменю путь маршрута с «/ dashboard» на «/ store» и соответствующую функцию обратного вызова в index.js .
в файле store.ejs добавьте элемент ‘p’ для отображения имени пользователя
store.ejs (просмотры)
<!DOCTYPE html>
<html>
<head>
<title>The Generics | Store</title>
<meta name="description" content="This is the description">
<link rel="stylesheet" href="styles.css" />
<link rel="stylesheet" href="../css/slideshow.css" />
<script src="https://checkout.stripe.com/checkout.js" defer></script>
<script>
var stripePublicKey = '<%= stripePublicKey %>'
</script>
<script src="store.js" defer></script>
</head>
<body>
<!-- this is added code-->
<h1 class="mt-4">Dashboard</h1>
<p class="lead mb-3">Welcome <%= user.name %></p>
<a href="/users/logout" class="btn btn-secondary">Logout</a>
</body>
</html>
index.js (маршруты)
const express = require('express');
const router = express.Router();
const { ensureAuthenticated, forwardAuthenticated } = require('../config/auth');
// Welcome Page
router.get('/', forwardAuthenticated, (req, res) => res.render('welcome'));
// Dashboard, change the route path to store
router.get(/*'/dashboard'*/'/store', ensureAuthenticated, (req, res) =>
res.render(/*'dashboard'*/'store', {
user: req.user
})
);
module.exports = router;
текст ошибки
ReferenceError: C:Userslee hao zhengDesktopGroceryStoreviewsstore.ejs:10
8| <script src="https://checkout.stripe.com/checkout.js" defer></script>
9| <script>
>> 10| var stripePublicKey = '<%= stripePublicKey %>'
11| </script>
12| <script src="store.js" defer></script>
13| </head>
stripePublicKey is not defined
at eval (eval at compile (C:Userslee hao zhengDesktopGroceryStorenode_modulesejslibejs.js:661:12), <anonymous>:12:26)
at store (C:Userslee hao zhengDesktopGroceryStorenode_modulesejslibejs.js:691:17)
at tryHandleCache (C:Userslee hao zhengDesktopGroceryStorenode_modulesejslibejs.js:272:36)
at View.exports.renderFile [as engine] (C:Userslee hao zhengDesktopGroceryStorenode_modulesejslibejs.js:489:10)
at View.render (C:Userslee hao zhengDesktopGroceryStorenode_modulesexpresslibview.js:135:8)
at tryRender (C:Userslee hao zhengDesktopGroceryStorenode_modulesexpresslibapplication.js:640:10)
at Function.render (C:Userslee hao zhengDesktopGroceryStorenode_modulesexpresslibapplication.js:592:3)
at ServerResponse.render (C:Userslee hao zhengDesktopGroceryStorenode_modulesexpresslibresponse.js:1012:7)
at ServerResponse.res.render (C:Userslee hao zhengDesktopGroceryStorenode_modulesexpress-ejs-layoutslibexpress-layouts.js:77:18)
at C:Userslee hao zhengDesktopGroceryStoreroutesindex.js:10:7
at Layer.handle [as handle_request] (C:Userslee hao zhengDesktopGroceryStorenode_modulesexpresslibrouterlayer.js:95:5)
at next (C:Userslee hao zhengDesktopGroceryStorenode_modulesexpresslibrouterroute.js:137:13)
at ensureAuthenticated (C:Userslee hao zhengDesktopGroceryStoreconfigauth.js:4:14)
at Layer.handle [as handle_request] (C:Userslee hao zhengDesktopGroceryStorenode_modulesexpresslibrouterlayer.js:95:5)
at next (C:Userslee hao zhengDesktopGroceryStorenode_modulesexpresslibrouterroute.js:137:13)
at Route.dispatch (C:Userslee hao zhengDesktopGroceryStorenode_modulesexpresslibrouterroute.js:112:3)
Комментарии:
1. Это Pug? Я предполагаю, что так
Ответ №1:
Вы должны убедиться, что переход stripePublicKey
к вашему шаблону EJS такой:
// Dashboard, change the route path to store
router.get(/*'/dashboard'*/'/store', ensureAuthenticated, (req, res) =>
res.render(/*'dashboard'*/'store', {
user: req.user
// Here make sure to pass key to temlate
stripePublicKey: '<insert key here>'
})
);