Как исправить «документ не определен» в узле с ejs - PullRequest
0 голосов
/ 06 мая 2019

Я только начал изучать javascript и nodejs (express и ejs) для разработки своего портфолио. когда я запускаю JavaScript ниже, я сталкиваюсь с ошибкой "document is not defined". кто-нибудь может мне помочь?
Терминал сообщает об этой ошибке.

ReferenceError: документ не определен на объекте. (C: \ Users \ milkc \ веб-программирование \ Практика \ sassPortfolio \ index.js: 21: 17) в Module._compile (внутренний / modules / cjs / loader.js: 701: 30) в Object.Module._extensions..js (внутренняя / modules / cjs / loader.js: 712: 10) в Module.load (внутренний / modules / cjs / loader.js: 600: 32) в tryModuleLoad (внутренняя / modules / cjs / loader.js: 539: 12) в Function.Module._load (внутренняя / modules / cjs / loader.js: 531: 3) в Function.Module.runMain (внутренний / modules / cjs / loader.js: 754: 12) при запуске (внутренний / bootstrap / node.js: 283: 19) в bootstrapNodeJSCore (внутренний / bootstrap / node.js: 622: 3)

const express = require('express');
const app = express();
const port = 3000;

app.set('view engine', 'ejs');

app.use(express.static('public'));

app.get('/', (req, res) => {
    res.render('index');
})

app.listen(port, () => {
    console.log('App listening on port' + port);

})



//Select Dom Item
const menuBtn = document.querySelector('.btn-menu');
const menu = document.querySelector('.menu');
const menuNav = document.querySelector('.menu-nav');
const menuBranding = document.querySelector('.menu-branding');
const navItems = document.querySelectorAll('.nav-item');

// Set Initial state of menu
let showMenu = false;

menuBtn.addEventListener('click', toggleMenu);

function toggleMenu() {
    if (!showMenu) {
        menuBtn.classList.add('close');
        menu.classList.add('show');
        menuNav.classList.add('show');
        menuBranding.classList.add('show');
        navItems.forEach(item => item.classList.add('sjow'));


    } else {
        // Set Menu State
        showMenu = true;

        menuBtn.classList.remove('close');
        menu.classList.remove('show');
        menuNav.classList.remove('show');
        menuBranding.classList.remove('show');
        navItems.forEach(item => item.classList.remove('sjow'));


    }
}
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">

    <!-- FontAwesome -->
    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css"
        integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">

    <!-- GoogleFont -->
    <link href="https://fonts.googleapis.com/css?family=Poppins" rel="stylesheet">

    <!-- CSS -->
    <link rel="stylesheet" href="css/main.css">

    <title>Shintaro Kai</title>
</head>

<body id='bg-img'>
    <header>
        <div class="menu-btn">
            <div class="btn-line"></div>
            <div class="btn-line"></div>
            <div class="btn-line"></div>
        </div>

        <nav class="menu">
            <div class="menu-branding">
                <div class="portrait"></div>
                <ul class="menu-nav">
                    <li class="nav-item">
                        <a href="" class="nav-link">
                            Home
                        </a>
                    </li>
                    <li class="nav-item">
                        <a href="/about.html" class="nav-link">
                            About Me
                        </a>
                    </li>
                    <li class="nav-item">
                        <a href="/work.html" class="nav-link">
                            My Work
                        </a>
                    </li>
                    <li class="nav-item">
                        <a href="/contact.html" class="nav-link">
                            How to reach me
                        </a>
                    </li>
                </ul>
            </div>
        </nav>
    </header>

    <main id="home">
        <h1 class="lg-heading">
            Shintaro <span class="text-secondary"> Kai </span>
        </h1>
        <h2 class="sm-heading">
            Web Developer, Game Designer and Video Contents Creator
        </h2>
        <div class="icons">
            <a href="#!">
                <i class="fab fa-linkedin fa-2x"></i>
            </a>
            <a href="#!">
                <i class="fab fa-facebook fa-2x"></i>
            </a>
            <a href="#!">
                <i class="fab fa-github fa-2x"></i>
            </a>
        </div>
    </main>
    <script src='js/main.js'></script>
    <script type="text/javascript" src="js/quiz.js"></script>
</body>

</html>

1 Ответ

1 голос
/ 06 мая 2019

документ существует только в браузерах, поэтому приведенный ниже код показан в js-файле, импортированном с помощью html

//code.js
//Select Dom Item
const menuBtn = document.querySelector('.btn-menu');
const menu = document.querySelector('.menu');
const menuNav = document.querySelector('.menu-nav');
const menuBranding = document.querySelector('.menu-branding');
const navItems = document.querySelectorAll('.nav-item');

// Set Initial state of menu
let showMenu = false;

menuBtn.addEventListener('click', toggleMenu);

function toggleMenu() {
    if (!showMenu) {
        menuBtn.classList.add('close');
        menu.classList.add('show');
        menuNav.classList.add('show');
        menuBranding.classList.add('show');
        navItems.forEach(item => item.classList.add('sjow'));


    } else {
        // Set Menu State
        showMenu = true;

        menuBtn.classList.remove('close');
        menu.classList.remove('show');
        menuNav.classList.remove('show');
        menuBranding.classList.remove('show');
        navItems.forEach(item => item.classList.remove('sjow'));


    }
}
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">

    <!-- FontAwesome -->
    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css"
        integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">

    <!-- GoogleFont -->
    <link href="https://fonts.googleapis.com/css?family=Poppins" rel="stylesheet">

    <!-- CSS -->
    <link rel="stylesheet" href="css/main.css">

    <title>Shintaro Kai</title>
</head>

<body id='bg-img'>
    <header>
        <div class="menu-btn">
            <div class="btn-line"></div>
            <div class="btn-line"></div>
            <div class="btn-line"></div>
        </div>

        <nav class="menu">
            <div class="menu-branding">
                <div class="portrait"></div>
                <ul class="menu-nav">
                    <li class="nav-item">
                        <a href="" class="nav-link">
                            Home
                        </a>
                    </li>
                    <li class="nav-item">
                        <a href="/about.html" class="nav-link">
                            About Me
                        </a>
                    </li>
                    <li class="nav-item">
                        <a href="/work.html" class="nav-link">
                            My Work
                        </a>
                    </li>
                    <li class="nav-item">
                        <a href="/contact.html" class="nav-link">
                            How to reach me
                        </a>
                    </li>
                </ul>
            </div>
        </nav>
    </header>

    <main id="home">
        <h1 class="lg-heading">
            Shintaro <span class="text-secondary"> Kai </span>
        </h1>
        <h2 class="sm-heading">
            Web Developer, Game Designer and Video Contents Creator
        </h2>
        <div class="icons">
            <a href="#!">
                <i class="fab fa-linkedin fa-2x"></i>
            </a>
            <a href="#!">
                <i class="fab fa-facebook fa-2x"></i>
            </a>
            <a href="#!">
                <i class="fab fa-github fa-2x"></i>
            </a>
        </div>
    </main>
    <script src='js/code.js'></script>
    <script type="text/javascript" src="js/quiz.js"></script>
</body>

</html>

, скажем, ваш основной код - index.js

const express = require('express');
const app = express();
const port = 3000;

app.set('view engine', 'ejs');

app.use(express.static('public'));

app.get('/', (req, res) => {
    res.render('index');
})

app.listen(port, () => {
    console.log('App listening on port' + port);

})

Вы должны запустить свой сервер следующим образом:

node index.js

Рад знать, что вы поделились своим кодом через GitHub.

Я только что клонировал ваш репозиторий и вот мой вопрос:

Я вижу этот код

const menuBtn = document.querySelector('.btn-menu');

Поскольку у меня есть весь ваш код, я выполнил поиск, но не смог найти совпадение.

Так что мой вопросгде это btn-menu?

Можете ли вы поделиться с нами больше контекста, спасибо

...