Bu sorunun daha önce sorulmuş olduğunu biliyorum, ancak cevabı hiçbir yerde bulamıyorum - sanki yapmam gereken herşeyi yapıyormuş gibi görünüyorum. Bu yüzden, HMR + React ve tipcript (tsx sözdizimi ile) işlemesi gereken bu webpack.config.js
dosyasına sahibim, ancak bu paket oluşturmuyor. Derleme konusunda hiçbir hata atar ve her şey yolunda gibi görünüyor, ancak paketi almaya çalıştığımda 404 döndürür. İşte benim dosya yapısı:bundle.js'yi bulamıyor
someApp/
src/
index.tsx
components/
Hello.tsx
dist/
webpack.config.js
...
Ve işte benim webpack yapılandırma var:
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'
},
};
başka tuhaf bir şey ben sadece webpack
çalıştırdığınızda beri düğüm aracılığıyla bu yürütülmesi ile ilgili bir şey olabileceğini düşünüyorum olmasıdır tek başına paketi derler. İşte benim kod sunucusunu başlatmak için var: Belki bir şey eksik ama WebPack için oldukça yeni
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/')
})
böylece herhangi bir yardım şaşırtıcı olurdu!
Teşekkürler David! Bu, diskten sunması için delice harika olsa da, paket dosyası 'localhost: 3000/dist/bundle.js'. Bu, yapılandırma dosyasımdaki durumun böyle olmasının bir sebebi var mı?Belki de sadece – Jay
dan bir paket istemediğin yolun ne olduğu konusunda kafam karıştı, fakat yanlış bir şey yapmıyorsun ama webpack-dev-server bundle.js'yi hafızadan sunuyor, bende bunu değiştirmek için bir seçenek yok. "webpack-dev-server/client? http: // localhost: 3000 '," "webpack/hot/only- eklemezseniz diske tüküren başka bir webpack.config.js dosyası eklemektir dev-server ', diske çıktı olacaktır – David
David'i açıkladığınız için teşekkürler! Sanırım beni yanlış anladınız, evet, dev sunucusunun bundle.js'yi bellekten hizmet ettiğini anlıyorum, 'localhost: 3000/dist/bundle.js' istemini yapamıyorum ve almamalı mıyım? Diske yazılmayacağından 'dist' klasöründe olmayacağımı anlıyorum, ama bunu talep edebilmem lazım, değil mi? – Jay