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.static设置缓存

理解Express express.static 和 __direname 及 __firename的含义

Express static静态路由

动态express.static()文件夹路径

express.static 和 CSS 文件的 MIME 类型错误

express 4.x 模板引擎与express.static