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

Pat*_*ski 2 vue.js webpack-hmr hot-module-replacement webpack-dev-middleware

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

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

Pat*_*ski 10

在我的主应用程序 .js 文件中:

if (module.hot) {
    module.hot.accept() // already had this init code 

    module.hot.addStatusHandler(status => {
        if (status === 'prepare') console.clear()
    })
}
Run Code Online (Sandbox Code Playgroud)

这让它一直为我工作。

另请参阅https://webpack.js.org/api/hot-module-replacement/#addstatushandler


Ham*_*bot 6

您的链接包含您问题的回复.只需添加您的main.js文件:

window.addEventListener('message', (e) => {
  if (e.data && typeof e.data === 'string' && e.data.match(/webpackHotUpdate/)) {
    console.log('hot reload happened')
    console.clear()
  }
})
Run Code Online (Sandbox Code Playgroud)

完整的main.js文件示例:

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'

Vue.config.productionTip = false

new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')

window.addEventListener('message', (e) => {
  if (e.data && typeof e.data === 'string' && e.data.match(/webpackHotUpdate/)) {
    console.log('hot reload happened')
    console.clear()
  }
})
Run Code Online (Sandbox Code Playgroud)

编辑:我没有阅读你对github问题的答案.您能否JSON.stringify(e)就多个活动提供某种活动信息,以便我们检查您的活动情况?