laravel - npm run watch 卡在加载中
问题描述
npm run watch
引导我到一个永远不会加载的页面。这是一步一步的:
- 我通过运行开始一个新项目
laravel new my-app
。我正在使用 Laravel 5.8 - 我去我的应用程序并通过运行安装依赖项
cd my-app && npm install
。这是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 --config=node_modules/laravel-mix/setup/webpack.config.js",
"prod": "npm run production",
"production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
},
"devDependencies": {
"axios": "^0.19",
"bootstrap": "^4.1.0",
"cross-env": "^5.1",
"jquery": "^3.2",
"laravel-mix": "^4.0.7",
"lodash": "^4.17.13",
"popper.js": "^1.12",
"resolve-url-loader": "^2.3.1",
"sass": "^1.15.2",
"sass-loader": "^7.1.0",
"vue": "^2.5.17"
}
}
- 完成后,我按预期工作
php artisan serve
npm run dev
还完美编译了 app.js 和 app.scss当我运行时
npm run watch
,它会正确构建它,但我无法通过常规访问它localhost:3000
。另外,我希望在所有内容编译完成后自动打开选项卡,但事实并非如此所以我尝试使用
browserSync
laravel mix 上的选项自己配置它。这是我webpack.mix.js
之后的文件:
const mix = require('laravel-mix');
/*
|--------------------------------------------------------------------------
| Mix Asset Management
|--------------------------------------------------------------------------
|
| Mix provides a clean, fluent API for defining some Webpack build steps
| for your Laravel application. By default, we are compiling the Sass
| file for the application as well as bundling up all the JS files.
|
*/
mix
.sass('resources/sass/app.scss', 'public/css')
.js('resources/js/app.js', 'public/js');
mix.browserSync('http://localhost:3000');
- 然后我又跑
npm run watch
了。BrowserSync 似乎工作,我可以访问它的 UI。这是输出:
DONE Compiled successfully in 5380ms 15:18:33
Asset Size Chunks Chunk Names
/css/app.css 173 KiB /js/app [emitted] /js/app
/js/app.js 1.38 MiB /js/app [emitted] /js/app
[Browsersync] Proxying: http://localhost:3000
[Browsersync] Access URLs:
--------------------------------------
Local: http://localhost:3000
External: http://192.168.0.163:3000
--------------------------------------
UI: http://localhost:3001
UI External: http://localhost:3001
--------------------------------------
[Browsersync] Watching files...
- 但是,当我访问时
http://localhost:3000
,它会显示一个永远不会加载的空白页面。控制台显示没有错误 - 我尝试使用
mix.browserSync('my-app.dev')
browserSync 之类的代理选项,但它给出了DNS_PROBE_FINISHED_NXDOMAIN
错误 - 我在 chrome 上试过了,但同样的事情发生在我的 firefox 上,我从来没有安装过任何插件,我什至基本上不使用
解决方案
上周我遇到了同样的问题,这是由于对 BrowserSync 的工作方式存在误解。
BrowserSync 中的内部服务器仅托管静态 HTML/JS/CSS 页面(在BrowserSync 文档中引用)
然而,它将充当由另一个 Web 服务器提供服务的现有 Web 应用程序的代理,然后在您更新任何内容时刷新您的浏览器来发挥它的魔力。
因此,解决方案是将 Laravel 项目托管在 Web 服务器上,然后用于npm run watch
启动 BrowserSync。我会推荐XAMPP,因为它非常易于使用
推荐阅读
- php - Laravel 7 中的分页 + URL 参数
- selenium-webdriver - 使用代理 InvalidArgumentError 运行 webdriver
- mongodb - 将 2 个数组对象合并为 1 个
- c# - 如何检查是否已在 Blazor 中设置属性?
- javascript - Vue.js 将数组中的值发送到端点的问题
- c++ - OpenMp:创建具有线程数大小的数组的最佳方法
- javascript - 如何使用从 webhook 接收的有效负载更新视图(在节点 js 中)?
- python - 服务器以奇怪的编码/压缩返回数据
- google-places-api - Google Place API - 多种类型的过滤器不起作用
- filenames - cytoscape 名称中的隐藏字符