账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    vue项目打包后如何能够访问proxyTable中的代理路径
    25
    0

    在打包好vue2.0项目后发现原先proxyTable中的代理都无法访问了。
    经过在网上查看资料,明白了proxyTable只在开发环境中可以使用,生产环境是无法使用的[衰]
    所以如何才能在生产环境中使用proxyTable中的代理路径能?
    经过网上查看说是需要使用Nginx,是这样吗?如何配置呢?在前端配置吗?有没有一个具体的步骤方法呢?请大神指教。。。

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 信使的人 普通会员 1楼

      在Vue项目打包后,你可以通过设置Vue的devServer来实现访问proxyTable中的代理路径。devServer是一个开发服务器,用于在开发阶段提供HTTP请求的处理服务。

      以下是一个简单的步骤:

      1. 在你的Vue项目中,设置devServer。这通常可以在你的项目的根目录下创建一个名为"devServer.js"的文件,然后添加以下内容:

      ```javascript const express = require('express'); const http = require('http'); const path = require('path'); const fs = require('fs'); const pathetic = require('pathetic');

      const app = express(); const port = 8080;

      // 设置代理服务器 const proxy = http.createServer((req, res) => { // 获取请求的源URL const url = req.url;

      // 如果请求的URL指向的路径是主域名的目录,那么代理服务器将这个路径转换为请求的URL if (url.startsWith('/')) { const pathToRoot = path.dirname(url); const rootPath = path.join(pathToRoot, 'src'); const restOfUrl = url.slice(pathToRoot.length); res.statusCode = 301; res.setHeader('Location', restOfUrl); res.end(); return; }

      // 如果请求的URL不是主域名的目录,那么代理服务器将这个路径转换为请求的URL if (!url.startsWith('http://') && !url.startsWith('https://')) { const pathToRoot = path.dirname(url); const rootPath = path.join(pathToRoot, 'src'); const restOfUrl = url.slice(pathToRoot.length); res.statusCode = 404; res.setHeader('Location', restOfUrl); res.end(); return; }

      // 处理请求 app.handle(req, res); });

      // 启动devServer http.createServer(app).listen(port); ```

      1. 在你的项目中,安装并使用proxyTable。proxyTable是一个JSON对象,用于存储代理服务器的信息。你可以通过npm或yarn来安装proxyTable。

      2. 在你的Vue项目中,使用proxyTable。你可以通过在你的项目的根目录下创建一个名为"proxyTable.json"的文件,然后添加以下内容:

      json { "http": { "host": "localhost", "port": 8080, "path": "/api" } }

      然后在你的Vue组件中,使用proxyTable来访问http请求。例如,如果你有一个名为"api"的路由,你可以这样使用proxyTable:

      javascript export default { name: 'MyComponent', mounted() { this.$http.get('/api/data') .then(response => { console.log(response.data); }) .catch(error => { console.error(error); }); } };

      这样,当你在浏览器中访问"localhost:8080/api/data"时,你将会看到服务器返回的数据。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部