把手/节点/ Express无法加载文件
所以我正在开发基本的CRUD操作的Node / Express webapp,而且我很难在项目中实现Handlebars。
当我尝试使用句柄时,我的.hbs(以前的.html)页面的样式表都没有加载。
这是文件树:
这是错误:
这里是一个脚本导入语句的例子
index.hbs
<!-- Bootstrap --> <link href="../vendors/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
最后这里是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'); });
我尝试过使用各种静态path从我发现的其他东西,但没有得到任何他们的工作。
任何帮助将不胜感激!!
谢谢!
通过在我的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) {
我认为这是可能的问题是在车把configuration,请看看这样的configuration:
app.engine('.hbs',exphbs({ defaultLayout:'layouts', layoutsDir:path.join(app.get('views'),'layouts'), partialsDir:path.join(app.get('views'),'partials'), extname:'.hbs', helpers: helpers })); app.set('view engine','hbs');
也许在你的这将是:
app.engine('hbs', exphbs({defaultLayout: false, extname:'.hbs',}));
如果你是使用app.set(express.static(__dirname + '/public'));
试着把你的样式放在公共文件夹中,例如bootstrap文件夹,然后你只需要这样调用它:
<link href="/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">