node.js - ExpressJS 不使用 app.use 提供静态模板

标签 node.js express

我有一个表单,我试图通过 app.use 使用 ExpressJS 作为静态页面,但出现错误。

const express = require('express');
var app = express();
app.use(express.static(__dirname + 'public'));
app.listen(3000);

这是我的文件夹结构

App Name
-node_modules/
-public/
       login.html
-package-lock.json
-package.json
-server.js

当我转到 localhost:3000/login 时,我的错误是无法获取/登录。我可以做什么来解决这个问题?当我使用 Handlebars 使用模板渲染时,它似乎有效。

编辑:如果有帮助的话,我也在 Windows 10 上运行。 放置 app.use(express.static(__dirname + '**/public**')); 也不能解决问题。

解决方案:

1.

 const express = require('express');
 const path = require('path');
 var app = express();

 app.use(express.static(path.join(__dirname, 'public'),{
    extensions: ['html']}
  ));

 app.listen(3000);

2.

const express = require('express');
const path = require('path');
var app = express();

app.get('/login', function(req, res){
  res.sendFile(__dirname + '/public/login.html')
 })

app.listen(3000)

3.

const express = require('express');
const path = require('path');
var app = express();

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

app.get('/login', function(req, res){ 
 res.sendFile(__dirname + "/public/login.html");

}); 

app.listen(3000)

最佳答案

来自官方document

console.log(__dirname + 'public')所示,您得到C:\Users\Daniel\Desktop\web\drone-apppublic,这是目录不正确。

最安全的方法是使用node.js提供的路径lib app.use(express.static(path.join(__dirname, 'public')));

C:\Users\Daniel\Desktop\web\drone-app\public\

最后,因为它提供静态文件,所以您需要包含文件扩展名 我刚刚测试了它,它仅适用于 localhost:3000/login.html 如果您想删除 html 文件的扩展名,您可以将规则添加到静态函数中

app.use(express.static(path.join(__dirname, 'public'),{ 扩展名:['html']} ));

您可以找到其余可用的函数属性 here

关于node.js - ExpressJS 不使用 app.use 提供静态模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46162576/

相关文章:

javascript - Express/ Mongoose 路由器 : 'Cast to ObjectId failed for value "undefined"at path "_id"'

node.js - 为什么未检测到 Cloudfoundry (Bluemix) 应用程序崩溃

node.js - 我们是否应该将 Helmet 中间件与在 Firebase Cloud Function 上运行的 Express 应用程序一起使用?

javascript - URL 重写在 Express 4.14.1 中不起作用

node.js - 在 app.router 之后访问 res.locals

node.js - 成员函数如何访问成员变量?

node.js - Cassandra 循环读取

node.js - 如何重定向到 Google Action 中的另一个意图(Google Assistant Action)

node.js - jade 模板条件类 nodejs expressjs

javascript - 使用 express 提供静态文件的最简单方法是什么?