升级laravel-mix1.0/webpack3之后原有代码无法运行

问题描述:npm update更新了下js包 laravel-mix由0.11更新到了1.16 webpack也由2更新到了3.5 复制了新的webpack.config.js到根目录 原有webpack.mix.js没有变动 运行npm run dev后总是提示找不到文件

webpack.mix.js内容我简化到了最简:

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

mix.js(['./resources/assets/js/app.js'], './public/js/app.js');

npm run出错代码:

 cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress

 95% emitting

 DONE  Compiled successfully in 9340ms                                                                        
fs.js:641
  return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
                 ^

Error: ENOENT: no such file or directory, open '/app.js'
    at Error (native)
    at Object.fs.openSync (fs.js:641:18)
    at Object.fs.readFileSync (fs.js:509:33)
    at File.read (/var/www/node_modules/laravel-mix/src/File.js:180:19)
    at File.version (/var/www/node_modules/laravel-mix/src/File.js:190:25)
    at Manifest.hash (/var/www/node_modules/laravel-mix/src/Manifest.js:55:65)
    at manifest.forEach.file (/var/www/node_modules/laravel-mix/src/plugins/CustomTasksPlugin.js:79:47)
    at Array.forEach (native)

在webpack.mix.js中增加一行:

mix.setPublicPath(path.normalize('./public'));

之后可以成功打包 但是文件会被打包到根目录 而不是public目录

阅读 2.7k
1 个回答

从来没有用过laravel-mix,
但是如果我碰到这种问题,在文档和搜索引擎都没有办法帮助我解决的时候,我会哪出大杀招

去 node_modules 目录下,调试啊,
通过出错信息,可以看到

/var/www/node_modules/laravel-mix/src/File.js

哪就去打开这个文件,大不了用console.log 一步步调试啊, 看看到底是为什么啊

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏