node.js - 设置express js静态文件并将它们包含在模板文件中

标签 node.js express

我已在 app.js 中将静态文件夹设置为公共(public)(在应用程序文件夹的根目录中)。 但仍然是 Handlebars 布局文件在链接css文件时,无法在public文件夹中找到文件。

// app.js code:
// init app
var app = express();

// view engine
app.set('views',path.join(__dirname,'views'));
app.set('view engine','handlebars');
app.engine('handlebars',expressHandlebars({defaultLayout:'layout'}));

// middleware
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended:false}));
app.use(cookieParser());

// set static folder
app.set(express.static(path.join(__dirname,'public')));



handlebars layout file:
<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css"/>

最佳答案

首先,您必须使用 robertklep 提到的绝对路径在评论中。

现在的问题是,您正在使用 app.set 这就是问题所在,您必须使用 .use 方法而不是 .set

现在关于如何构建目录,我建议分配一个像“/public”这样的目录路径来访问公共(public)文件。可以这样做:

//app.use not .set
app.use('/public', express.static(path.join(__dirname,'public')));
//see the first argument in above line it assigns which directory path is used to access the public file through URL

完成此操作后,您可以像这样访问所需的文件:

<link rel="stylesheet" type="text/css" href="/public/css/bootstrap.min.css"/>

关于node.js - 设置express js静态文件并将它们包含在模板文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44924671/

相关文章:

node.js - 如何使用 set NODE_ENV=product && nodemon 连接在线数据库?

Node.js - 禁止声明特定 TCP 端口并使用变量代替(la Cloud9)

javascript - 使用来自 http.get 的数据更新 app.get 响应

Javascript - .map 内存不足

javascript - 表达错误 [ERR_HTTP_HEADERS_SENT] : Cannot set headers after they are sent to the client

reactjs - 如何在 React 应用程序、Docker 和 WSL 中处理热重载?

node.js - 让 Socket.io 与新的 SSL 加密网站一起工作

git - 使用 git archive 作为 npm 依赖项

javascript - 在记录 Action 中变得空虚 - twilio

node.js - native 无服务器与无服务器 Express