Я знаю, что этот вопрос задан раньше, но я честно не могу найти ответ нигде - кажется, что я делаю все, что мне нужно, но связка не создается. Таким образом, у меня есть файл webpack.config.js
, который должен обрабатывать HMR + React и машинопись (с синтаксисом tsx), но это не создает пакет. Не вызывает ошибок при компиляции, и, похоже, все в порядке, но пакет возвращает 404, когда я пытаюсь его извлечь. Вот моя структура файла:Не удается найти bundle.js
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'
},
};
Еще одна странная вещь, что я думаю, что это могло бы иметь что-то делать с выполнением этого через узел, так как, когда я просто запустить 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 так что любая помощь будет удивительно!
Спасибо David! Хотя это безумно удивительно, что он служит ему с диска, файл пакета недоступен из 'localhost: 3000/dist/bundle.js'. Вы видите, почему это происходит в моем конфигурационном файле?Может быть, я просто смущен тем, какой путь я должен запросить у этого пакета из – Jay
, вы ничего не делаете неправильно, но webpack-dev-server обслуживает bundle.js из памяти, я не думаю, что есть возможность изменить это, что вы может сделать, это добавить еще один файл webpack.config.js, который выплескивается на диск, если вы не включаете «webpack-dev-server/client» http: // localhost: 3000 ', ' webpack/hot/only- dev-server ', он выведет на диск – David
Спасибо за объяснение Дэвида! Я думаю, что вы меня неправильно поняли, да, я понимаю, что сервер dev обслуживает bundle.js из памяти, не должен ли я запрашивать 'localhost: 3000/dist/bundle.js' и получать его? Я понимаю, что он не будет в папке 'dist', так как он не записывается на диск, но я могу запросить его, нет? – Jay