标签: webpack-hmr

Angular 2:虽然关于HMR和@ngrx/store

在开始之前,这个链接很有用:HMR的目的是什么?.

我在巨大的项目管理/构思方面没有丰富的经验.我还年轻,留着美丽的胡须.所以我在这里,寻找建议.

种子

我正在寻找和思考角度2的种子,我想知道使用HMR是否是开发大型应用程序以及如何做到这一点的可行选择.

那些只是,我只是想与你讨论做出我的决定.我们都需要跨越我们的经验:-)

数据结构

基于这个例子:

@Component({
  selector: 'home',
  templateUrl: `
    <form (ngSubmit)="submitState(localState.value)" autocomplete="off">

      <input
        [value]="localState.value"
        (input)="localState.value = $event.target.value"
        placeholder="Submit Local State to App State">

      <button>Submit Value</button>
    </form>
  `
})
export class HomeComponent {
  localState = { value: '' };

  constructor(public appState: AppState, public title: Title) {}

  onSubmit(value: string) {
    this.appState.set('value', value);
    this.localState.value = '';
  }
}
Run Code Online (Sandbox Code Playgroud)

通过使用appState,可以动态重新加载组件并注入数据.听起来很酷.但这是我的第一个问题:要启用此功能,组件必须在appstate树中有一个位置,因此localState在示例中使用like 是个好主意.这迫使我们使用组件内部的对象,这可能是巨大的.这可能很烦人.你同意吗 ?这可能是大型应用程序的问题吗?(我打算在大型应用程序上工作).

它可能没什么,因为我只需要存储localStorage我希望被HMR跟踪的数据.那么为什么不呢.

数据存储

谈到存储,我也使用@ngrx/store作为Redux的实现.这似乎是一个非常好的主意,因为国家可以是我的localStorage.当应用程序更新时,我只需要补充我的状态就可以了.hmr不会跟踪组件中的数据,只有状态才会跟踪.

听起来不错.但这是个好主意吗?我试图找到一个连接器来处理@ngrx/store和hmr之间的通信. 胜利!但这个套餐似乎已经过时了.

我可以自己做,但这是个好主意吗? …

typescript redux webpack-hmr ngrx angular

3
推荐指数
1
解决办法
1054
查看次数

无法让Webpack 2 HMR React工作

目前我正在努力让HMR在我的Webpack 2设置中工作.我将解释我的整个设置,所以我希望这足以让某人了解正在发生的事情.

我项目的结构:

config
  dev.js
  prod.js 
dist
  css
  js
  index.html
node_modules
src
  components
    // some JavaScript components
  shared
  stylesheets
  index.js
.babelrc
package.json
webpack.config.js
Run Code Online (Sandbox Code Playgroud)

这是我的webpack.config.js文件的内容,放在我的项目的根目录中:

function buildConfig(env) {
  return require('./config/' + env + '.js')(env)
}

module.exports = buildConfig;
Run Code Online (Sandbox Code Playgroud)

所以在这个文件中我可以选择将不同的环境传递给buildConfig函数.我使用此选项来使用不同的配置文件进行开发和生产.这是我package.json文件中的内容:

{
  "main": "index.js",
  "scripts": {
    "build:dev": "node_modules/.bin/webpack-dev-server --env=dev",
    "build:prod": "node_modules/.bin/webpack -p --env=prod"
  },
  },
  "devDependencies": {
    "autoprefixer-loader": "^3.2.0",
    "babel-cli": "^6.18.0",
    "babel-core": "^6.24.1",
    "babel-loader": "^6.2.5",
    "babel-preset-latest": "^6.16.0",
    "babel-preset-react": "^6.16.0",
    "babel-preset-stage-0": "^6.16.0",
    "css-loader": "^0.25.0",
    "extract-text-webpack-plugin": "^2.1.0",
    "json-loader": "^0.5.4", …
Run Code Online (Sandbox Code Playgroud)

reactjs webpack webpack-dev-server webpack-hmr hot-module-replacement

3
推荐指数
1
解决办法
1635
查看次数

Webpack /反应热重载重载整个页面?

可能一直都在问这个问题,但是我在阳光下尝试了所有方法,却找不到解决方案。

我创建了一个回购协议,以便更轻松地获取帮助。您可以克隆它,运行npm install,然后npm start:devhttp:// localhost:8080上看到一个快速的本地服务器。

它可以正常工作,并且当我更改文件(例如src/components/Note/Note.css)时,应用程序会重新加载。但是,我只想重新加载组件,而不是整个页面。我不确定自己在做什么错。任何帮助将不胜感激!

reactjs webpack react-hot-loader webpack-hmr

3
推荐指数
1
解决办法
2606
查看次数

在代客安全站点 SSL 错误中使用 laravel-mix 进行 Webpack 热重载

我正在运行Laravel Valet以在本地托管站点,并运行Laravel Mix来编译资产并使用 Webpack 开发服务器执行 HMR

.dev通过以下方式在本地保护了该站点

valet secure
Run Code Online (Sandbox Code Playgroud)

{{ mix('js/app.js') }} 运行时调用没问题npm run watch

但是每当我想通过运行hotnpm 脚本来利用热重载时,我都会得到这个

GET https://localhost:8080//css/app.css net::ERR_CERT_AUTHORITY_INVALID

GitHub问题建议添加--https 标志,我试过了,也--http

我什至通过--disable-host-check标志禁用了主机检查并清除了所有可能的缓存,甚至尝试了新的git clone但无济于事

这是我的 package.json

{
    "private": true,
    "scripts": {
        "dev": "npm run development",
        "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
        "watch": "npm run development -- --watch",
        "watch-poll": "npm run watch -- --watch-poll",
        "hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --https --disable-host-check --config=node_modules/laravel-mix/setup/webpack.config.js",
        "prod": "npm …
Run Code Online (Sandbox Code Playgroud)

laravel webpack webpack-hmr laravel-mix

3
推荐指数
1
解决办法
3874
查看次数

__webpack_hmr进入错误的端口并失败

我正在尝试热重新加载以使用我的设置.目前,它的工作原理如下 -

server.js

// this is the main server, which connects to db, serves react components, etc

const app = express();

app.get('/:params?*', (req, res) => {
  res.status(200).send(`
    <!doctype html>
    <html>
      <head>
        <meta charset="utf-8">
      </head>
      <body>
        hi
        <script src="http://localhost:3000/build/client.js"></script>
      </body>
    </html>
  `);
});

...
app.listen(5000);
Run Code Online (Sandbox Code Playgroud)

gulpfile.babel.js

const CLIENT_DEV_CONFIG = {
  entry: [
    CLIENT_ENTRY,
    'webpack-hot-middleware/client',
    'eventsource-polyfill',
  ],
  plugins: [
    new webpack.HotModuleReplacementPlugin(),
  ],
  output: {
    ...CLIENT_OUTPUT,
    publicPath: 'http://localhost:3000/build/',
  },
  module: {
    loaders: [BABEL_LOADER]
  },
}

gulp.task('client-watch', done => {
  console.log(CLIENT_DEV_CONFIG.output.publicPath);
  const opts = …
Run Code Online (Sandbox Code Playgroud)

javascript gulp webpack webpack-hmr webpack-hot-middleware

2
推荐指数
1
解决办法
5642
查看次数

打字稿和HMR不起作用

我有使用Typescript,ReactJS和Webpack构建的前端应用程序.
我正在尝试启用HMR.
这些是启动脚本

"build": "NODE_ENV=production $(npm bin)/webpack --watch",
"dev": "$(npm bin)/nodemon --exec \"$(npm bin)/ts-node\" ./server/server.ts || npm run build",
Run Code Online (Sandbox Code Playgroud)

这是我的ts-loader

{ test: /\.tsx?$/, loader: 'awesome-typescript-loader' }
Run Code Online (Sandbox Code Playgroud)

和我的开发服务器配置

if (NODE_ENV === 'development') {
  let webpack = require('webpack')
  const webpackConfig = require('../webpack.config')
  const compiler = webpack(webpackConfig)

  app.use(require('webpack-dev-middleware')(compiler, {
    noInfo: true, publicPath: webpackConfig.output.publicPath
  }))
  app.use(require('webpack-hot-middleware')(compiler))
}
Run Code Online (Sandbox Code Playgroud)

我无法克服错误

[HMR] The following modules couldn't be hot updated: (Full reload needed)
This is usually because the modules which have changed (and their parents) do not know …
Run Code Online (Sandbox Code Playgroud)

typescript webpack webpack-hmr

2
推荐指数
1
解决办法
1851
查看次数

webpack-dev-server 和 webpack -&gt; 输出文件到父目录,并且 webpack-dev-server 热重载仍然有效

我们的 Web 应用程序具有以下结构:

/src(.sln)
--/ClientSite
--/AdminSite
--/SharedWeb
Run Code Online (Sandbox Code Playgroud)

SharedWeb我们有以下文件夹:

--/Client
--/Admin
--/Shared
Run Code Online (Sandbox Code Playgroud)

我们有这个结构,以便webpack-dev-server无论我们编辑什么文件都可以热重载,并且只有一个package.json等。如果有人感兴趣,我们为什么选择这个结构的主题:

共享 React 前端组件 -> 使用 TypeScript 分离项目 -> Visual Studio 2017

到目前为止一切正常,但现在我们需要部署我们的解决方案,我们需要将其导出bundle.js到正确的站点。

webpack.client.config.js

热重载工作正常,但脚本文件未正确导出到站点:

output: {
    filename: "./Scripts/dist/[name].bundle.js",
},
Run Code Online (Sandbox Code Playgroud)

脚本文件已正确导出,但热重载停止工作:

output: {
    filename: "../ClientSite/Scripts/dist/[name].bundle.js",
},
Run Code Online (Sandbox Code Playgroud)

根据文档使用路径和文件名的正确方法,没有任何效果:

output: {
    path: path.resolve(__dirname, "Scripts/dist/"),
    filename: "[name].bundle.js"
}
Run Code Online (Sandbox Code Playgroud)

脚本文件已正确导出,但热重载不起作用。如果我使用webpackwith--watch并手动重新加载webpack-dev-serverURL,我可以看到更改,但它不会自动重新加载。

output: {
    path: path.resolve(__dirname, "../ClientSite/Scripts/dist/"),
    filename: "[name].bundle.js"
},
Run Code Online (Sandbox Code Playgroud)

javascript json webpack webpack-dev-server webpack-hmr

2
推荐指数
1
解决办法
1799
查看次数

如何在每次热重装事件中设置我的Vue.js站点以清除浏览器的Javascript控制台?

我有一个带Webpack Dev Middleware的Vue.js站点(由HTTP.sys Web服务器通过ASP.NET Core站点提供服务,但我猜这没关系).有谁知道我如何设置我的网站以清除浏览器的Javascript控制台在每个热重新加载事件?

这是我能找到的唯一相关链接,但它似乎是我不使用的Web服务器.我不确定为什么特定的Web服务器会很重要.

vue.js webpack-hmr hot-module-replacement webpack-dev-middleware

2
推荐指数
2
解决办法
512
查看次数

如何在使用 webpack 热模块重新加载启动新实例之前等待应用程序关闭?

我正在为我的 nest.js 应用程序使用 webpack hot module reload (hmr)。重新加载有效,但在启动新实例之前不会等待旧实例完全关闭(数据库连接、电报机器人等)。这使得 typeorm 抛出以下错误:

AlreadyHasActiveConnectionError: Cannot create a new connection named "default", because connection with such name already exist and it now has an active connection session.
Run Code Online (Sandbox Code Playgroud)

在我的main.ts我有一个关闭旧实例的处理程序:

if (module && module.hot) {
  module.hot.accept();
  module.hot.dispose(async () => {
    console.log('disposing module');
    await app.close();
    console.log('has closed app');
  });
}
Run Code Online (Sandbox Code Playgroud)

当我运行 hmr 并对我的应用程序进行更改时,我可以看到它调用了 dispose 处理程序并立即启动了新应用程序。在启动新实例之前,如何让 webpack 等待 dispose 处理程序返回的承诺解决?

node.js typescript webpack webpack-hmr nestjs

2
推荐指数
1
解决办法
4412
查看次数

Vitejs:由于 HMR,与“wss://host:port/”的 WebSocket 连接失败

我使用 Docker 和 Kubernetes 部署了一个 Vue 页面,它正在运行。然而,即使我禁用了 HMR,Vite 仍然会在出错后刷新:

与“wss://dashboard.default.io:8181/”的 WebSocket 连接失败:

[vite] 服务器连接丢失。轮询重新启动...

Dockerfile:

FROM node:16-alpine3.14
WORKDIR /usr/src/app
COPY . .
RUN yarn install
EXPOSE 8181
CMD [ "yarn", "dev","--host", "--port", "8181" ]
Run Code Online (Sandbox Code Playgroud)

yarn dev调用vite命令

vite.config.js:

export default defineConfig({
  plugins: [vue()],
  server: {
    hmr: false
  }
})
Run Code Online (Sandbox Code Playgroud)

vue.config.js:

module.exports = {
    devServer: {
      proxy: 'https://backend.default.io'
    }
  }
Run Code Online (Sandbox Code Playgroud)

包.json:

FROM node:16-alpine3.14
WORKDIR /usr/src/app
COPY . .
RUN yarn install
EXPOSE 8181
CMD [ "yarn", "dev","--host", "--port", "8181" …
Run Code Online (Sandbox Code Playgroud)

javascript webpack-hmr vuejs3 vite

2
推荐指数
1
解决办法
1万
查看次数

使用 ViteJS React/SolidJS 检测 HMR 事件

使用 ViteJS starter for React / SolidJS,

在代码更改触发 HMR 重新加载之前,如何检测(使用某种 js 回调)?(进行一些清理)

需要明确的是,我不是问如何使用 HMR,只是问如何在此之前进行一些清理。

我尝试过使用window.onbeforeunload没有效果。

谢谢。

reactjs webpack-hmr vite solid-js

2
推荐指数
1
解决办法
1199
查看次数

让marionette.backbone与webpack热模块更换一起使用

我从这里使用了一个示例项目来设置一个带有热模块替换的webpack项目.然后我建立了一个示例骨干应用程序.

// main.js
import $ from 'jquery';
import Backbone from 'backbone';

import Router from './router';

window.app = window.app || {};

const app = new Backbone.Marionette.Application();
app.addRegions({content: '#content'});

app.on('start', () => {
    if (Backbone.history)
      Backbone.history.start({ pushState: true })
}

);

app.addInitializer(() => {
  return new Router();
});


$( () => { app.start() });

// HMR
if (module.hot) {
    module.hot.accept();
}
Run Code Online (Sandbox Code Playgroud)

我可以看到HRM根据[HMR] connected调试输出正在加载.当文件发生变化时,我可以看到它根据以下输出重建并推送到客户端的更新:

[HMR] Updated modules:
process-update.js?e13e:77 [HMR]  - ./app/backbone/views/template.hbs
process-update.js?e13e:77 [HMR]  - ./app/backbone/views/hello.js
process-update.js?e13e:77 [HMR]  - ./app/backbone/router.js …
Run Code Online (Sandbox Code Playgroud)

backbone.js webpack webpack-dev-server webpack-hmr

1
推荐指数
1
解决办法
1159
查看次数