如何为 laravel-vujs 项目设置 root/base url?

Posted

技术标签:

【中文标题】如何为 laravel-vujs 项目设置 root/base url?【英文标题】:How to set root/base url for a laravel-vujs project? 【发布时间】:2018-02-10 05:44:28 【问题描述】:

我已经将一个 VueJS 项目部署到像 www.example.com/demos/app, 这样的域中 但是当我从 axios 向 api 发送请求时,它指向的是 www.example.com/login 而不是 www.example.com/demos/app/login

这是我使用axios的请求代码

export const login = ( dispatch ,  payload, context ) => 
    return axios.post('/login', payload).then((response) => 
        // do something
    ).catch((error) => 
        // handle erros
    )

【问题讨论】:

【参考方案1】:

您可以解决此问题的一种方法是在您的页面头部添加一个元标记(就像您对 csrf 所做的那样),然后在您的 bootstrap.js 文件中引用它:

<meta name="api-base-url" content=" url('demos/app') " />

bootstrap.js(在window.axios = require('axios'); 下方)

window.axios.defaults.baseURL = document.head.querySelector('meta[name="api-base-url"]').content;

希望这会有所帮助!

【讨论】:

document.head.querySelector('meta[name="api-base-url"]').content;这将在测试期间导致问题(vue 测试), @EmekaMbah 这个问题能解决你的问题吗:***.com/questions/49820828/…?【参考方案2】:

在 config.js 中:

const CONFIG = 
  API_URL_ROOT: 'http://localhost:8000/api/v1/',


export default CONFIG;

你可以像这样设置 axios 默认值:

import config from '../config.js';

axios.create(
  baseURL: config.API_BASE_URL
);

或者您可以通过从config 导入API_BASE_URL 来设置路径,然后在每次使用axios 进行get/post/put/delete 调用时指向它

【讨论】:

我不明白你说的config.js是什么意思 您可以保留一个配置文件,在其中存储各种配置,并将图像导入到必要的地方 很棒的解决方案 我更喜欢这个解决方案,@Rwd 的解决方案在测试期间会导致问题,因为 document.head.querySelector('meta[name="api-base-url"]').content ;不可用。【参考方案3】:

Laravel 自带 axios 并在 bootstrap.js 中导入,所以只需转到 bootstrap.js 并添加以下内容:

window.axios.defaults.baseURL = 'http://example.test';

您可以在window.axios.defaults.headers.common 行之后添加它 -其他信息:

axios.create 将创建一个具有自己的全局 url 和配置的实例。如果您有多个 url 或配置,并且想在不同的组件中使用它,请使用它。

【讨论】:

【参考方案4】:

在项目根目录下创建vue.config.js(如果不存在)-

vue.config.js -

module.exports = 
    publicPath: process.env.NODE_ENV === 'production'
        ? '/demos/app/'
        : '/'

然后,在resources/js/bootstrap.js 中添加一行 -

const publicPath = require("../../vue.config");
window.axios.defaults.baseURL = publicPath

【讨论】:

以上是关于如何为 laravel-vujs 项目设置 root/base url?的主要内容,如果未能解决你的问题,请参考以下文章

滚动时如何为 recyclerview 项目设置动画?

如何为 MS Test 项目设置工作目录

如何为 NavigationView 中的项目设置自定义字体?

如何为 API 级别 < 23 的项目设置重力

如何为“大数据”分析项目设置架构?

如何为 QTableView 中的当前项目设置样式表