【问题标题】:Vue + Laravel 5.4 + Mix - "Cannot Get /"Vue + Laravel 5.4 + 混合 - “无法获取 /”
【发布时间】:2017-09-11 06:15:29
【问题描述】:

我从一个名为 vuetable-2 的 Larvavel + Vue 组件开始下载(顺便说一句,非常好)。

首先,php artisan serve 有效。一切都很好,只是它不会将更改热部署到 .vue 文件。

我终于让npm run hot 工作了,但是,当我转到该页面时,我收到了浏览器消息:

无法获取/

采取的行动:

  • 检查了我的依赖项,据我所知,一切都是正确的。
  • 删除 node_modules 并重新构建(现在 3 次)npm install
  • 创建了一个单独的测试项目来确认 Vue 是否热重载(它
    确实)

我怀疑问题出在某处的某些配置上,但是对于我的生活,我无法弄清楚问题出在哪里。

我发现唯一奇怪的是,webpack.config.js 说它将使用 port 3000,然而,唯一似乎工作的端口是 在使用 artisan 时是 8000,或者run dev hot uses 8080 产生上述消息。

但是,如果我对文件进行更改,我会得到漂亮的 Laravel Mix 吐司,告诉我构建是否成功,但在浏览器中看不到它们。 webpack.config.js 也有正确的构建路径,即public/


这是我的 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=./webpack.config.js",
    "watch": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=./webpack.config.js",
    "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=./webpack.config.js",
    "prod": "npm run production",
    "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=./webpack.config.js"
  },
  "devDependencies": {
    "babel-plugin-transform-runtime": "^6.23.0",
    "babel-preset-stage-2": "^6.24.1",
    "bootstrap-sass": "^3.3.7",
    "cross-env": "^3.2.4",
    "laravel-elixir": "^4.0.4",
    "laravel-mix": "0.*",
    "lodash": "^4.17.4",
    "node-sass": "^4.5.2",
    "vue-loader": "^11.1.4",
    "vue-style-loader": "^2.0.0",
    "vue-template-compiler": "^2.2.4"
  },
  "dependencies": {
    "axios": "^0.15.3",
    "jquery": "^3.1.1",
    "accounting": "^0.4.1",
    "vue-events": "^3.0.1",
    "vue-masked-input": "^0.4.1",
    "vue": "^2.1.10",
    "vuetable-2": "^1.3.1"
  }
}

webpack.config.js 文件与安装的标准文件相比没有变化。

【问题讨论】:

    标签: vue.js laravel-5.4 laravel-mix


    【解决方案1】:

    对于仍在寻找答案的人

    将此添加到 webpack.mix.js 文件中

    let mix = require('laravel-mix');
    
    mix.webpackConfig({
        devServer: {
            proxy: {
                '*': 'http://localhost:8000'
            }
        }
    });
    

    运行后端服务器 (php artisan serve),然后运行 ​​npm run hot。这会将所有前端请求代理到后端,以便正确处理文件。更多信息here

    话虽如此,npm run hot 无需开发人员修改即可工作。

    来源https://github.com/JeffreyWay/laravel-mix/issues/2057

    【讨论】:

    • 我试过这个,但它给了我 404 | Laravel 的未找到页面。首先,我把这段代码放在webpack.mix.js 文件中,然后运行php artisan serve,然后运行npm run hot,但是没有运气!!你能帮帮我吗?
    【解决方案2】:

    您似乎错过了跨环境的路径... 试试这个:

    "dev": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
    "watch": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
    "hot": "node node_modules/cross-env/dist/bin/cross-env.js 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": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
    

    我已删除您的"dev": "npm run development","prod": "npm run production",。如果您想更改命令,只需更改它们即可。

    希望它有效。

    【讨论】:

    • 嗨@Angus Simons,感谢您的回复。我还在学习所有这些东西,所以谢谢你的指点。不幸的是,我仍然得到相同的结果。但你给了我一个新的调查途径。
    • 谢谢,我会重新阅读。我通过 NPM 添加了一堆东西,所以我想我在某个地方搞砸了。
    • @Anthony 你全局安装 webpack 了吗?
    • 我认为 Laravel 有问题(我在 Linux 上使用 5.4)。只是为了测试,我使用laravel new Project 进行了全新安装。然后是npm install,然后是npm run dev,它进行了构建,但未能启动Web 服务。然后尝试npm run hot,它显示构建服务和 Web 服务器正在运行,但同样的消息:Cannot get "/"
    • 在全新安装时,您必须为跨环境设置 /dist 文件夹,因为他们更改了它。