Express.static() 不工作
Posted
技术标签:
【中文标题】Express.static() 不工作【英文标题】:Express.static() not working 【发布时间】:2018-01-13 16:43:08 【问题描述】:我有以下服务器代码:
var express = require('express');
var webpack = require('webpack');
var app = express();
//app.use(express.static(path.join(__dirname, "public")));
app.use("/", express.static(__dirname + "/public"));
//both not working. I have tried multiple ways....
app.get("/",function (req, res)
res.sendFile(__dirname + "/public/index/index.html")
);
app.listen(3000);
Webpack 配置
module.exports =
entry: './app/index/index.js',
output:
path: path.resolve(__dirname, 'public/index'),
publicPath: '/public/index',
filename: 'index_bundle.js'
,
module:
rules: [
test: /\.(js)$/, use: 'babel-loader' ,
test: /\.css$/, use: [ 'style-loader', 'css-loader' ]
]
,
plugins: [
new HtmlWebpackPlugin(
template: 'app/index/index.html'
)
];
以下目录结构:
-public
-index
-index_bundle.js
当我尝试加载我的 index_bundle js 时出现以下错误:
GET http://localhost:3000/public/index/index_bundle.js 404(未找到)
我无法修复它,我在网上找不到解决方案。
【问题讨论】:
是否有 index_bundle.js 所在的名为 index 的文件夹? 【参考方案1】:改变
app.use("/", express.static(__dirname + "/public"));
到
app.use("/", express.static(__dirname));
您可以使用DEBUG=* node <your-server-file>.js
来调试此类快递相关问题。
更好更安全的解决方案:
var path = require('path');
var express = require('express');
var app = express();
app.use("/public", express.static(path.resolve(__dirname, 'public')));
app.get("/",function (req, res)
res.sendFile(__dirname + "/public/index/index.html")
);
app.listen(3000);
【讨论】:
不建议用于生产代码,因为它允许检索项目目录中的 any 文件。最好使用app.use('/public', express.static(__dirname + '/public'))
。
Express 服务于静态也是不可取的。我只是指出所提供代码的问题。
当然,但在这种情况下,您应该同时告诉 OP:您的解决方案存在安全问题并且他们不应该使用 Express 在生产中提供静态内容。
@robertklep 现在怎么样?
嘿,为什么我不应该使用 express 来提供静态文件?以上是关于Express.static() 不工作的主要内容,如果未能解决你的问题,请参考以下文章
理解Express express.static 和 __direname 及 __firename的含义