(3)运行 Mix 任务编译和监控代码
最后更新于:2022-04-02 01:42:07
注意:本节命令均需要在项目根目录下运行。
[TOC]
## 编译
>[info] 所有编译后的资源文件都被存放在 `public` 文件夹中。
### 开发模式
>[warning] 生成的文件未被压缩,便于开发调试:
~~~bash
$ npm run dev
~~~
或
~~~bash
$ npm run developmennt
~~~
### 生产模式
>[success] 生成的文件自动经过压缩,便于线上加载:
~~~bash
$ npm run prod
~~~
或
~~~bash
$ npm run production
~~~
## 监控
>[info] 可在开发时一直运行,Webpack 检测到文件更改时将自动重新编译资源:
~~~bash
npm run watch
~~~
在某些环境中,当文件更改时,Webpack 不会更新。
如果系统出现这种情况,请考虑使用 `watch-poll` 命令:
~~~bash
$ npm run watch-poll
~~~
## 可能出现的报错
### Module build failed: `node-sass`
>[danger] 报错内容:
~~~bash
ERROR Failed to compile with 2 errors
error in ./resources/assets/sass/app.scss
Module build failed: Error: ENOENT: no such file or directory, scandir '/home/vagrant/Code/Laravel/node_modules/node-sass/vendor'
·
·
·
error in ./resources/assets/sass/app.scss
Module build failed: ModuleBuildError: Module build failed: Error: ENOENT: no such file or directory, scandir '/home/vagrant/Code/Laravel/node_modules/node-sass/vendor'
~~~
>[warning] 报错原因:
> 打开 `~node_modules/node-sass/vendor` 文件夹下为空,缺少 `linux-x64-48/binding.node` 文件。
>[success] 解决方法:
> 执行以下命令,更改包内容后进行重建
~~~bash
$ npm rebuild node-sass --no-bin-links
~~~
>[info] 成功后显示:
~~~bash
Downloading binary from https://github.com/sass/node-sass/releases/download/v4.5.3/linux-x64-48_binding.node
Cannot download "https://github.com/sass/node-sass/releases/download/v4.5.3/linux-x64-48_binding.node":
ETIMEDOUT
Timed out attemping to establish a remote connection
·
·
·
gyp info ok
Installed to /home/vagrant/Code/Laravel/node_modules/node-sass/vendor/linux-x64-48/binding.node
node-sass@4.5.3 /home/vagrant/Code/Laravel/node_modules/node-sass
~~~
### Module build failed: `optipng-bin`
>[danger] 报错内容:
~~~bash
ERROR Failed to compile with 2 errors
error in ./resources/assets/semantic/dist/themes/default/assets/images/flags.png
Module build failed: Error: spawn /home/vagrant/Code/Laravel/node_modules/optipng-bin/vendor/optipng ENOENT
·
·
·
error in ./resources/assets/sass/app.scss
Module build failed: ModuleBuildError: Module build failed: Error: spawn /home/vagrant/Code/Laravel/node_modules/optipng-bin/vendor/optipng ENOENT
~~~
>[warning] 报错原因:
> 打开 `~node_modules/optipng-bin` 文件夹下缺少 `vendor/optipng` 文件。
>[success] 解决方法:
> 执行以下命令,更改包内容后进行重建
~~~bash
$ npm rebuild optipng-bin --no-bin-links
~~~
>[info] 成功后显示:
~~~bash
·
·
·
✔ optipng pre-build test passed successfully
optipng-bin@3.1.4 /home/vagrant/Code/Laravel/node_modules/optipng-bin
~~~
### Cannot find module 'xxxxx'
>[danger] 报错内容举例:
~~~bash
module.js:471
throw err;
^
Error: Cannot find module 'crypt'
~~~
>[warning] 报错原因:
> 因为网络或者其他原因,导致某个扩张包没有正常安装上。
> `~node_modules` 目录下没有 `crypt` 文件夹。
>[success] 解决方法:
缺少什么包就添加什么包。
当然也可以 [清空所有扩展包,然后重新安装一遍](frontend/install-packages.md)。
';