【问题标题】:Problem with Bootstrap in nodeJS and expressJSnodeJS和expressJS中的Bootstrap问题
【发布时间】:2021-04-13 12:00:49
【问题描述】:

我在 nodejs 中使用 Bootstrap 4 并使用车把模板引擎进行表达,设计也可以,但 bootstrap.js 在我的项目中不适用于我 我从 bootstrap 网站获取导航栏代码并将其粘贴到 header.hbs 文件中,现在我在单击下拉菜单时遇到导航栏中下拉列表的问题不起作用(通知我插入 bootstrap CSS 文件、jquery 文件和 bootstrap.hbs 文件)。 js 文件,我在同一个问题下拉列表中尝试引导 CDN 不起作用)你能帮我解决这个问题吗? 谢谢

app.js 中的代码

var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
const mongoose = require('mongoose');
const expressHbs = require('express-handlebars')

var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');

var app = express();

// view engine setup
app.engine(
  "hbs",
  expressHbs({
    defaultLayout: "layout",
    extname: ".hbs",
  })
);
app.set('view engine', 'hbs');

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

mongoose.connect(
  "mongodb://localhost/shopping-cart",
  { useUnifiedTopology: true, useNewUrlParser: true },
  (error) => {
    if (error) {
      console.log("the error from mongoose" + error);
    }
    console.log("connecting to DB Shopping Cart...");
  }
);
app.use('/', indexRouter);
app.use('/users', usersRouter);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  next(createError(404));
});

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

module.exports = app;

layout.hbs中的代码

<!DOCTYPE html>
<html>
  <head>
    <title>{{title}}</title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.9.0/css/all.min.css">
    <link rel="preconnect" href="https://fonts.gstatic.com">
    <link href="https://fonts.googleapis.com/css2?family=Nunito:wght@600&display=swap" rel="stylesheet">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
    <link rel='stylesheet' href='/stylesheets/style.css' />

  </head>
  <body>
    {{> header}}
    <div class="container">
      {{{body}}}
    </div>






        <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
  </body>
</html>

header.hbs 中的代码

          <nav class="navbar navbar-expand-lg">
        <div class="container-fluid ">
          <a class="navbar-brand" href="#">Brand</a>
          <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
          </button>
          <div class="collapse navbar-collapse d-flex justify-content-end" id="navbarSupportedContent">
            <ul class="navbar-nav me-auto mb-2 mb-lg-0">
              <li class="nav-item">
                <a class="nav-link" href="#">
                  <i class="fas fa-shopping-cart"></i>
                  Shopping-Cart
                </a>
              </li>
              <li class="nav-item dropdown">
                <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
                  <i class="fas fa-user"></i>
                  User-Management
                </a>
                <ul class="dropdown-menu" aria-labelledby="navbarDropdown">
                  <li><a class="dropdown-item" href="#">Action</a></li>
                  <li><a class="dropdown-item" href="#">Another action</a></li>
                  <li><hr class="dropdown-divider"></li>
                  <li><a class="dropdown-item" href="#">Something else 
                    here</a></li>
                </ul>
              </li>
            </ul>
          </div>
        </div>
      </nav>

浏览器中的控制台 enter image description here

【问题讨论】:

  • 请附上实际代码而不是图片,如果有任何控制台或网络错误,请附上。
  • 感谢您的回复,我编辑帖子并包含代码
  • @WillTaylor 如果可以请帮助我

标签: node.js mongodb express express-handlebars


【解决方案1】:

运行npm install bootstrap并在路由下面添加app.js:

app.use(
    // Where "/scripts/js" is a folder into "public"
    "/scripts/js", 
    express.static(
        path.join(__dirname, "node_modules/bootstrap/dist/js")
    )
);

干杯!

【讨论】:

    猜你喜欢
    • 2020-05-29
    • 2012-09-09
    • 1970-01-01
    • 2015-07-17
    • 1970-01-01
    • 1970-01-01
    • 2014-11-20
    • 2017-11-21
    • 2021-04-01
    相关资源
    最近更新 更多