学习使用webpack建立MERN堆栈项目。在运行webpack捆绑所有内容并启动Express服务器后,我发现找不到bundle.js,我在控制台中看到了localhost:3000 / bundle.js 404状态代码。也许我的路径不正确或者我错过了什么
的package.json
{
"name": "mern_tut",
"version": "1.0.0",
"description": "",
"main": "server.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"babel-core": "^6.26.0",
"babel-loader": "^7.1.2",
"babel-preset-es2015": "^6.24.1",
"babel-preset-react": "^6.24.1",
"express": "^4.16.1",
"react": "^16.0.0",
"react-dom": "^16.0.0",
"webpack": "^3.6.0"
}
}
webpack.config.js
const path = require('path');
module.exports = {
entry: './static/app.js',
output: {
path: path.resolve('dist'),
filename: 'bundle.js'
},
module: {
loaders: [
{ test: /\.js$/, loader: 'babel-loader', exclude: /node_modules/ },
]
}
}
.babelrc
{
"presets":[
"es2015", "react"
]
}
server.js
var express = require('express')
var app = express();
app.use(express.static('static'));
var server = app.listen(3000, function() {
var port = server.address().port;
console.log("Started server at port", port);
});
项目设置
- dist
-bundle.js
- node_modules
- static
-app.js
-index.html
- .babelrc
- package.json
- server.js
- webpack.config.js
答案 0 :(得分:1)
您没有在这里为您的bundle.js提供服务。将以下内容添加到server.js
app.use(express.static('dist'))
答案 1 :(得分:0)
这是我在项目中使用的解决方案
// server.js
const express = require('express')
const path = require('path')
const app = express()
// serve our static stuff like index.css
app.use(express.static(path.join(__dirname, 'dist')))
// send all requests to index.html so browserHistory in React Router works
app.get('*', function (req, res) {
res.sendFile(path.join(__dirname, 'dist', 'index.html'))
})
const port = process.env.PORT || 3000
app.listen(port,() => {
console.log(`App started on port: ${port}`);
});