我正在使用webpack 3.8.1并且正在接收以下构建警告的几个实例:
WARNING in ./src/Components/NavBar/MainMenuItemMobile.js
There are multiple modules with names that only differ in casing.
This can lead to unexpected behavior when compiling on a filesystem with other case-semantic.
Use equal casing. Compare these module identifiers:
* /Users/path/to/babel-loader/lib/index.js!/Users/path/to/NavBar/MainMenuItemMobile.js
Used by 1 module(s), i. e.
/Users/path/to/babel-loader/lib/index.js!/Users/path/to/NavBar/ConstructedMainMenuItems.js
* /Users/path/to/babel-loader/lib/index.js!/Users/path/to/Navbar/MainMenuItemMobile.js
Used by 1 module(s), i. e.
/Users/path/to/babel-loader/lib/index.js!/Users/path/to/Navbar/ConstructedMainMenuItems.js
.....
(webpack)-hot-middleware/client.js ./src/index.js
Run Code Online (Sandbox Code Playgroud)
令人困惑的是,引用的"两个"文件只是一个文件 - 目录中没有两个文件,其名称仅在大小写上有所不同.
我还注意到,如果受到这些警告的影响,我的热重新加载器通常不会对文件进行更改.
可能导致此问题的原因是什么?
我正在为客户开发一个项目,我需要使用webpack的热模块替换功能.我正在使用NGINX背后的快速(节点)应用程序.我正在使用许多javascript框架来设计应用程序,React恰好是其中之一.
我将使用HMR功能.
我有这样的webpack.config.js:
var webpack = require('webpack');
var ExtractTextPlugin = require("extract-text-webpack-plugin");
var merge = require('webpack-merge');
var validate = require('webpack-validator');
var CleanWebpackPlugin = require('clean-webpack-plugin');
var styleLintPlugin = require('stylelint-webpack-plugin');
//breaking up into smaller modules
//commons module
//first
var start = {
context : __dirname ,
//entry point defination
entry : {
app : ['./require.js','webpack-hot-middleware/client?https:127.0.0.1:8195'],
vendor : ['angular','angular-animate','angular-messages','angular-aria','angular-route','angular-material','react','react-dom',''webpack-hot-middleware/client?https:127.0.0.1:8195'']
},
//output defination
output : {
path : './public/dist',
publicPath: 'https://127.0.0.1:8195/public/dist/',
filename : 'app.bundle.js'
},
module: { preLoaders: [
{
test: /\.(js|jsx)$/,
exclude: /(node_modules|bower_components)/,
loaders: …Run Code Online (Sandbox Code Playgroud) javascript node.js express webpack-hmr webpack-hot-middleware
我有一个简单的配置,webpack-dev-middleware并webpack-hot-middleware使用热重载(HMR)与反应.
一切都工作正常,除了我对代码所做的每一次更改都需要2到3-4秒!直到我在浏览器中看到它.难道我做错了什么 ?它应该是这样的?
我的代码相当大,我的捆绑缩小到841kb(200kb gzip)这是原因吗?代码库越大,捆绑创建速度越慢?
Express Server:
var webpack = require('webpack');
var webpackConfig = require('./webpack.hot.config');
var compiler = webpack(webpackConfig);
app.use(require("webpack-dev-middleware")(compiler, {
noInfo: true,
publicPath: webpackConfig.output.publicPath,
watchOptions: {
poll: true
}
}));
app.use(require("webpack-hot-middleware")(compiler, {
log: console.log,
path: '/__webpack_hmr',
heartbeat: 10 * 1000
}));
Run Code Online (Sandbox Code Playgroud)
webpack.hot.config.js
const path = require('path');
const webpack = require('webpack');
module.exports = {
context: __dirname,
entry: [
'webpack-hot-middleware/client?path=/__webpack_hmr&timeout=20000',
'./src/js/index'
],
module: {
loaders: [{
test: /\.jsx?$/,
include: path.join(__dirname, 'src/js'),
//exclude: /node_modules/,
loader: 'react-hot!babel'
},
{ …Run Code Online (Sandbox Code Playgroud) express reactjs webpack-hmr webpack-hot-middleware hot-module-replacement
我有一个自定义加载器,可以加载以下文件 data.js
const data = {
a: ()=> 8885555,
b: ()=> 55555
}
module.exports = name => {
return data[name] && data[name]()
}
Run Code Online (Sandbox Code Playgroud)
当我更改上述文件(如更改b值)时,应用程序中断了
ERROR in ../data.js?name=a
Module build failed: Error: Final loader (../data-loader.js) didn't return a Buffer or String
at runLoaders (C:\Users\010\Saber.js\webpack-hmr-3-ways\middleware\node_modules\webpack\lib\NormalModule.js:319:18)
at C:\Users\010\Saber.js\webpack-hmr-3-ways\middleware\node_modules\loader-runner\lib\LoaderRunner.js:373:3
at iterateNormalLoaders (C:\Users\010\Saber.js\webpack-hmr-3-ways\middleware\node_modules\loader-runner\lib\LoaderRunner.js:214:10)
at iterateNormalLoaders (C:\Users\010\Saber.js\webpack-hmr-3-ways\middleware\node_modules\loader-runner\lib\LoaderRunner.js:221:10)
at C:\Users\010\Saber.js\webpack-hmr-3-ways\middleware\node_modules\loader-runner\lib\LoaderRunner.js:236:3
at runSyncOrAsync (C:\Users\010\Saber.js\webpack-hmr-3-ways\middleware\node_modules\loader-runner\lib\LoaderRunner.js:124:12)
at iterateNormalLoaders (C:\Users\010\Saber.js\webpack-hmr-3-ways\middleware\node_modules\loader-runner\lib\LoaderRunner.js:232:2)
at Array.<anonymous> (C:\Users\010\Saber.js\webpack-hmr-3-ways\middleware\node_modules\loader-runner\lib\LoaderRunner.js:205:4)
at Storage.finished (C:\Users\010\Saber.js\webpack-hmr-3-ways\middleware\node_modules\enhanced-resolve\lib\CachedInputFileSystem.js:43:16)
at provider (C:\Users\010\Saber.js\webpack-hmr-3-ways\middleware\node_modules\enhanced-resolve\lib\CachedInputFileSystem.js:79:9)
@ ./index.js 1:10-40
@ multi webpack-hot-middleware/client?path=/__webpack_hmr&timeout=20000 ./index.js
Run Code Online (Sandbox Code Playgroud)
这是自定义的webpack加载器
const devalue …Run Code Online (Sandbox Code Playgroud) 我有一个用TypeScript编写的项目,我可以利用Webpack Hot Reload,在我的Node.js服务器中使用两个webpack-hot-middleware和webpack-dev-middleware库.
此外,我已经为我的Stylus代码配置了所有构建步骤(使用Gulp进行增量构建),这会在我的公共目录中生成一个单独的CSS文件.
所以,现在我想利用Webpack对CSS的热重载,因为我已经有了我的TypeScript内容,但我不想让它构建我的CSS文件,因为我已经有了很棒的东西.理想情况下,我只想让Webpack在每次更改时热重新加载我的单个CSS文件.实现这一目标的最简单,最好的方法是什么?
我当前的配置文件如下所示:
const webpack = require('webpack');
module.exports = {
entry: [
'webpack-hot-middleware/client',
'./src/client/index.tsx'
],
output: {
path: '/public/js/',
filename: 'bundle.js',
publicPath: '/js/'
},
resolve: {
extensions: ['', '.webpack.js', '.web.js', '.ts', '.tsx', '.js']
},
module: {
loaders: [
{
test: /\.tsx?$/,
loader: 'ts-loader'
}
]
},
plugins: [
new webpack.optimize.OccurenceOrderPlugin(),
new webpack.HotModuleReplacementPlugin()
];
};
Run Code Online (Sandbox Code Playgroud)
然后,我使用Webpack Hot Middleware和Webpack Dev Middleware,如下所示:
const webpackConfig = require('../webpack.config');
const compiler = webpack(webpackConfig);
app.use(webpackDevMiddleware(compiler, { noInfo: true, publicPath: webpackConfig.output.publicPath …Run Code Online (Sandbox Code Playgroud) 我正在将 Webpack 实施到旧版 Express 前端应用程序中。我已经按照说明实现了 webpack-dev-middleware 和 webpack-hot-middleware,但我不知道如何实际引用 webpack-dev-middleware 在我的索引文件中构建的内存包。
server.js:
......
// Webpack HMR
if (isDevelopment) {
const webpack = require('webpack');
const webpackConfig = require('./webpack.config');
const compiler = webpack(webpackConfig);
app.use(
require('webpack-dev-middleware')(compiler, {
noInfo: false,
hot: true,
publicPath: webpackConfig.output.publicPath,
})
);
app.use(require('webpack-hot-middleware')(compiler));
}
....
Run Code Online (Sandbox Code Playgroud)
webpack.config.js:
...
entry: {
app: [
'webpack-hot-middleware/client?path=http://localhost:3001/__webpack_hmr&timeout=2000&overlay=false',
path.join(__dirname, './public/js/boot/app.js'),
],
deps: [
'webpack-hot-middleware/client?path=http://localhost:3001/__webpack_hmr&timeout=2000&overlay=false',
path.join(__dirname, './public/js/boot/deps.js'),
]
},
output: {
path: isDevelopment ? path.join(__dirname, './public/js/bundles') : path.join(__dirname, './dist/js/bundles'),
publicPath: '/',
filename: '[name].js'
},
....
Run Code Online (Sandbox Code Playgroud)
Base view: server/views/index.jade: …
我使用Webpack带Hot Module Reloading.我还使用chrome扩展React Developer Tools来在开发时检查反应树.当我检查页面并查看组件树时,我希望看到实际组件的名称,但是,对于名称显示的每个组件Proxy Component.
我可以让你了解更多关于我的细节Webpack,但我正在努力甚至谷歌正确解决这个问题.
以下是我用于webpack的工具:
"webpack": "^1.9.6",
"webpack-dev-middleware": "^1.2.0",
"webpack-dev-server": "^1.14.1",
"webpack-hot-middleware": "^2.0.0"
Run Code Online (Sandbox Code Playgroud)
webpack.config.js
var path = require('path');
var webpack = require('webpack');
module.exports = {
devtool: 'eval',
entry: [
'webpack-hot-middleware/client',
'./client/index'
],
output: {
path: path.join(__dirname, 'static'),
filename: 'bundle.js',
publicPath: '/static/'
},
plugins: [
new webpack.HotModuleReplacementPlugin(),
new webpack.NoErrorsPlugin()
],
module: {
loaders: [
{
test: /\.json$/,
loader: 'json'
},
{
test: /\.js$/,
loader: 'babel-loader',
include: path.join(__dirname, 'client'), …Run Code Online (Sandbox Code Playgroud) 我使用webpack并使用html-webpack-plugin生成的脚本包更新我的index.html文件,例如bundle.[hash].js.
然后我必须运行webpack-dev-server所以我可以将该包加载到内存中并利用热模块替换.
这使代码编译两次.
但是,我想要的是webpack-dev-server能够使用new更新index.html文件bundle.[hash].js,因为现在我必须运行webpack后跟webpack-dev-sever.编译两次似乎很奇怪.
同样,我运行的唯一原因webpack是使用bundle的新哈希更新我的index.html文件.如果我可以webpack-dev-server将更新的index.html输出到磁盘,那么我可以webpack完全放弃命令.
这可能吗?如果是这样,webpack配置会改变什么?我的webpack配置很长,所以我认为在这里发布它会有所帮助.
webpack webpack-dev-server webpack-hmr html-webpack-plugin webpack-hot-middleware
我有一个基本设置,每个应用程序都在一个单独的目录中,我使用自定义服务器使用webpack-dev-middleware/编译它们webpack-hot-middleware。一切正常,只是我无法让 HMR 为第二个应用程序工作(我正在使用react-hot-loader)。
这是说明问题的最小回购: https //github.com/AmrN/multi-react-app-hmr
我的主要代码文件:
webpack.config.js
var path = require('path');
var webpack = require('webpack');
var HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = function (appName) {
return {
devtool: 'cheap-module-eval-source-map',
entry: [
'react-hot-loader/patch',
'webpack-hot-middleware/client',
path.join(__dirname, appName, 'index'),
],
output: {
path: path.join(__dirname, 'dist', appName),
filename: 'bundle.js',
publicPath: '/'+appName+'/'
},
plugins: [
new webpack.HotModuleReplacementPlugin(),
new webpack.NamedModulesPlugin(),
new webpack.NoEmitOnErrorsPlugin(),
new HtmlWebpackPlugin({
template: path.join(__dirname, appName, 'index.html'),
}),
],
module: {
loaders: [{
test: /\.jsx?$/,
loaders: ['babel-loader'],
exclude: /node_modules/, …Run Code Online (Sandbox Code Playgroud) webpack react-hot-loader webpack-hot-middleware webpack-dev-middleware
我正在开始一个新项目,虽然使用完整的 firebase 模拟器套件会很好。
这是我认为可以工作的:
// THIS IS MY package.json SCRIPT
"start-firebase-build": "set NODE_ENV=development_firebase&& webpack --config webpack.config.js",
Run Code Online (Sandbox Code Playgroud)
webpack.config.js
该 webpack 配置将执行以下操作:
if (DEVELOPMENT_FIREBASE) {
const DEV_PLUGINS = [
new webpack.HotModuleReplacementPlugin(), // ENABLE HMR
new webpack.HashedModuleIdsPlugin() // INCLUDE HASH IN MODULE IDS AND FILENAMES
];
const PLUGINS = config.plugins.concat(DEV_PLUGINS); // MERGE COMMON AND DEV PLUGINS
config = {
...config,
watch: true,
mode: "development",
devtool: "inline-source-map",
plugins: PLUGINS,
output: {
filename: "[name].[hash:5].js",
path: path.resolve(__dirname, "public"), // OUTPUT FILES WILL BE IN /public
publicPath: …Run Code Online (Sandbox Code Playgroud) webpack firebase-hosting firebase-tools react-hot-loader webpack-hot-middleware