【问题标题】:Laravel: npm run hot keep running old project instead of currentLaravel:npm run hot 继续运行旧项目而不是当前项目
【发布时间】:2018-09-14 07:44:49
【问题描述】:

太奇怪了,我以前在我的 xampp\htdocs laravel+vue 上有一个项目,我一直在那个项目上使用 HMR。现在我创建了新项目 laravel + react 我试图猜测为什么 HMR 不工作我尝试了 github 上的每一部分以使工作如此不幸我还尝试重新创建 node_modules 和 package.json 并清除 npm 也不工作。

然后我在当前项目kintool> npm run hot 上运行 npm run hot 时发现了这个问题,控制台上没有 [WDS] Hot Module Replacement enabled.。但是当我打开我的旧项目时,它有。我的目标位置在当前项目上,但它在我的旧项目而不是当前项目上运行,这就是为什么我当前的项目无法正常工作。

我尝试在 htdocs 上删除我的旧项目,但每当我运行 npm run hot 时,它看起来仍然像针对我的旧项目一样

我在当前应用上的 webpack.mix.js

let mix = require('laravel-mix');
mix.react('resources/assets/js/bundle.js', 'public/js')
   .sass('resources/assets/sass/app.scss', 'public/css');

mix.disableSuccessNotifications();

旧项目 webpack.mix.js

let mix = require('laravel-mix');


mix.js('resources/assets/js/app.js', 'public/js')
     .stylus('resources/assets/stylus/app.styl', 'public/css/vuetify.css')
   .sass('resources/assets/sass/app.scss', 'public/css')
   .sass('resources/assets/sass/global.sass', 'public/css/global.css')
   .sass('resources/assets/sass/media-hover-effect.sass', 'public/css/media-hover-effect.css')
   .copyDirectory('node_modules/font-awesome','public/copiedDir/font-awesome')
   .js('resources/assets/js/jscripts/myscripts.js', 'public/js');
mix.disableSuccessNotifications();

【问题讨论】:

    标签: javascript node.js laravel webpack


    【解决方案1】:

    我找到了原因。我正在使用 laravel-mix 2.1

    有两种方法可以解决这个问题

    1.) 降级到 1.7 或 1.6

    2.) 或按照我所做的step。你需要配置 webpack-dev-server。

    我找到了一个潜在的解决方法,它看起来像是删除了前导 生成的 Webpack 配置中的入口点上的斜线修复了以下问题 HMR。

    我会提交一份 PR,但是当我进行这些更改时 测试开始失败,我现在没有足够的时间 调查原因?

    您可以在 node_modules/laravel-mix 中应用这些更改 目录:

    在 src/builder/Entry.js 中:第 90 行:更改:

    let name = output.pathFromPublic(Config.publicPath).replace(/.js$/, '').replace(/\/g, '/');致:

    let name = output.pathFromPublic(Config.publicPath).replace(/.js$/, '').replace(/\/g, '/').replace(/^//, '');这解决了 JS 的问题。

    在 src/builder/webpack-rules.js 第 137 行:更改:

    让 outputPath = preprocessor.output.filePath.replace(Config.publicPath + path.sep, path.sep).replace(/\/g,'/');致:

    让 outputPath = preprocessor.output.filePath.replace(Config.publicPath + path.sep, path.sep).replace(/\/g,'/').replace(/^//, '');

    【讨论】:

      猜你喜欢
      • 2020-01-22
      • 2013-12-29
      • 2020-09-19
      • 2021-11-08
      • 1970-01-01
      • 2016-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多