Handlebars/Node/Express 无法加载文件

AHi*_*ouy 1 javascript node.js express handlebars.js

因此,我正在开发一个用于基本 CRUD 操作的 Node/Express Web 应用程序,但在项目中实现 Handlebars 却遇到了困难。

当我尝试使用把手时,.hbs(以前的 .html)页面中的样式表都没有加载。

这是文件树:

在此输入图像描述

这是错误: 在此输入图像描述

这是脚本导入语句的示例

索引.hbs

<!-- Bootstrap -->
    <link href="../vendors/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
Run Code Online (Sandbox Code Playgroud)

最后是 server.js 文件

var express     = require('express'),
    bodyParser  = require('body-parser'),
    path        = require('path'),
    mysql       = require('mysql'),
    dbconfig    = require('./config/database'),
    exphbs  = require('express-handlebars');

var connection = mysql.createConnection(dbconfig.connection)
connection.query('USE ' + dbconfig.database);

var app = express();



//Body Parser Middleware
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));

//Set static path
//app.use(express.static(path.join(__dirname, 'public')));
//app.use(express.static(__dirname + '/public'));
//app.set('views', __dirname + '/views');
//app.use('/views', express.static(path.join(__dirname, '/views')));


app.engine('hbs', exphbs({defaultLayout: false}));
app.set('view engine', 'hbs');

app.set(express.static(__dirname + '/public'));

//app.use('/views/vendors', express.static(path.join(__dirname, '/views/vendors')));
//app.use(express.static(__dirname + '/public/vendors'));


app.get('/', function(req, res) {
    res.render('index');
    connection.query("SELECT * FROM Student", function(err, rows){
        console.log(rows);
    });


});

app.listen(80, function() {
    console.log('we are live on 80');
});
Run Code Online (Sandbox Code Playgroud)

我尝试使用我在 SO 上找到的其他东西中的各种静态路径,但无法让它们中的任何一个工作。

任何帮助将不胜感激!!

谢谢!

AHi*_*ouy 5

通过在 app.get('/'... 上方添加以下行解决了我的问题

app.use("/vendors",express.static(__dirname + "/vendors"));
app.use("/build",express.static(__dirname + "/build"));
app.use("/images",express.static(__dirname + "/images"));


app.get('/', function(req, res) {
Run Code Online (Sandbox Code Playgroud)