我知道这个问题以前已经被问过了,但是我实在找不到答案——似乎我做了所有应该做的事情,但是bundle没有创建。所以我有一个webpack.config.js
文件,应该处理HMR + React和typescript(使用tsx语法),但它没有创建bundle。编译时没有出现任何错误,看起来一切都很好,但是当我尝试获取它时,bundle返回404。这是我的文件结构:
someApp/
src/
index.tsx
components/
Hello.tsx
dist/
webpack.config.js
...
这是我的Webpack配置:
var path = require('path')
var webpack = require('webpack')
module.exports = {
entry: [
'webpack-dev-server/client?http://localhost:3000',
'webpack/hot/only-dev-server',
'./src/index.tsx'
],
output: {
path: path.join(__dirname, '/dist'),
filename: 'bundle.js',
publicPath: '/public/'
},
plugins: [
new webpack.HotModuleReplacementPlugin()
],
devtool: 'eval',
resolve: {
extensions: ['', '.webpack.js', '.web.js', '.ts', '.tsx', '.js']
},
module: {
loaders: [
{
test: /\.tsx?$/,
loaders: [
'react-hot-loader',
'ts-loader'
],
include: path.join(__dirname, '/src')
}
],
preLoaders: [
{ test: /\.js$/, loader: 'source-map-loader' }
]
},
externals: {
'react': 'React',
'react-dom': 'ReactDOM'
},
};
还有一件奇怪的事情,我认为这可能与通过Node执行有关,因为当我只运行webpack
时,它会编译捆绑包。这是启动服务器的代码:
var webpack = require('webpack');
var WebpackDevServer = require('webpack-dev-server');
var config = require('./webpack.config');
new WebpackDevServer(webpack(config), {
publicPath: config.output.publicPath,
hot: true,
historyApiFallback: true
}).listen(3000, 'localhost', function (err, result) {
if (err) {
return console.log(err)
}
console.log('Listening at http://localhost:3000/')
})
也许我漏掉了什么,但是我对webpack还很陌生,所以任何帮助都将不胜感激!
localhost:3000/dist/bundle.js
不可用。您是否看到我的配置文件中有任何原因?也许我只是对我应该请求捆绑包的路径感到困惑。 - Jay