2017-08-06 142 views
0

首先,我已经尝试过了完成这件事和我搜索互联网上的每一个网站(包括计算器)来寻找答案。现在两个小时后,我正在寻求帮助。Express.static()不工作

我有以下的服务器代码:

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 CONFIGS

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' 
    }) 
]}; 

-

Following directory structure: 
     -public 
     -index 
      -index_bundle.js 

我收到以下错误,当我尝试加载我index_bundle JS:GET http://localhost:3000/public/index/index_bundle.js 404(未找到)

我知道你们不是我的'个人军队',但我试图搜索它近2个半小时,我是一个总noob。我无法修复它,并且我在网络上找不到解决方案。

感谢您的耐心配合。

+0

有指定索引中index_bundle.js所在的文件夹? –

回答

2

变化

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); 
+2

这不适用于生产代码,因为它将允许检索项目目录中的_any_文件。更好地使用'app.use('/ public',express.static(__ dirname +'/ public'))''。 – robertklep

+1

快递服务的静态是不可取的。我只是用提出的代码指出问题。 –

+1

当然,但在这种情况下,您应该告诉OP:您的解决方案存在安全问题,并且他们不应该使用Express来为生产中的静态内容提供服务。 – robertklep