前端基础:三种本地启动服务器的方式(解决本地跨域问题)

前端小王hs:
清华大学出版社《后台管理实践——Vue.js+Express.js》作者 
网络工程师 前端工程师 项目经理 阿里云社区博客专家 

email: 337674757@qq.com
vx: 文章最下方有vx链接
资料/交流群: vx备注前端

在本地运行html文件,如果文件仅仅包含模板和样式,那么直接双击.html文件即可,但是一旦涉及到文件上传的情况,就会提示跨域等问题,如下图所示:
CORS跨域
原因是浏览器的安全策略不允许从file://源加载本地脚本、图片、AJAX请求等资源,所以这就需要我们在本地开启一个服务器

VSCode的Live Server插件

如果开发时使用的VSCode,那么可以安装Live Server扩展,如下图所示:
Live Server
启动的时候非常简单,右键.html文件,选择Open with Live Server,即会启动服务器并自动在浏览器打开页面,按钮位置如下图所示:
在LS打开
扩展的端口默认为5500,如下图所示:
5500
现在执行上传,就不会出现CORS的问题了

如果需要修改端口,可找到liveServer.settings.port属性进行修改,如下图所示:
修改LS端口

Hbuilder(X)直接运行

如果开发使用的工具是Hbuilder(X),那么直接在右上角选择运行运行到浏览器→选择对应的浏览器即可,如下图所示:
Hbuilder(X)直接运行
默认的端口是8848,如下图所示:
8848
上面两种方式都时候小的demo

vite或webpack

如果项目比较大,更为推荐使用构建工具vitewebpack去启动服务器

vite

使用vite需要有node.js环境,这里不再叙述安装和配置node.js的步骤

  1. 新建一个文件夹,并执行命令npm init -y进行初始化,如下图所示:
    在这里插入图片描述

文件夹会生成一个package.json,如下图所示:
初始化node
注:这就算构建好一个node项目的基础了

  1. 安装vite,执行命令npm i vite --save-dev,如下图所示:
    安装vite
    在文件夹内新建vite配置文件vite.config.js,并添加基本配置代码:
import { defineConfig } from 'vite';

export default defineConfig({
  // 这里可以添加更多配置项
});
  1. 现在就可以启动项目了,输入npx vite,会在控制台输出运行链接,如下图所示:
    运行链接
    此时的端口是5173,如果想要设置端口,参考vite官网的服务器port设置

webpack

  1. 使用webpack的第一步安装与vite一样,都是npm init -y,接着安装三个依赖,运行npm install --save-dev webpack webpack-cli html-webpack-plugin,如下图所示:
    安装依赖
    html-webpack-plugin是一个非常有用的插件,它可以自动生成HTML文件,并自动注入打包后的js文件

  2. 同添加vite.config.js一样,webpack也需要新增配置文件,名字为webpack.config.js,同时添加如下代码:

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
    entry: './src/index.js', // 入口文件路径
    output: {
        filename: 'bundle.js',
        path: path.resolve(__dirname, 'dist'),
        clean: true,
    },
    plugins: [
        new HtmlWebpackPlugin({
            template: './src/index.html' // HTML模板路径
        }),
    ],
    module: {
        rules: [
            // 如果需要处理CSS或其他文件类型,可以在这里添加规则
        ],
    },
};
  1. 按配置文件,新增核心目录src,在src下面增加index.html文件和入口文件index.js,内容就是需要运行的内容

这里的一个小tips是,如果想要快速构建一个html模板,可以输入!,如下图所示:
快速生成html模板

  1. package.json修改启动命令,代码如下:
"scripts": {
    "build": "webpack"
}

如果需要hmr,就需要安装webpack-dev-server,并添加start命令,代码如下:

"scripts": {
    "start": "webpack serve --open",
    "build": "webpack"
}
  1. 执行npm start运行,如下图所示:
    运行weback
    此时的端口是8080,如下图所示:
    8080端口
欢迎关注csdn前端领域博主: 前端小王hs,喜欢可以点个赞!您的支持是我不断更新的动力!🔥🔥🔥

前端小王hs:
清华大学出版社《后台管理实践——Vue.js+Express.js》作者 
网络工程师 前端工程师 项目经理 阿里云社区博客专家 

email: 337674757@qq.com
vx: 文章最下方有vx链接
资料/交流群: vx备注前端
<think>好的,我需要解决用户关于Vue2项目本地启动时出现问题,而服务器上运行正常的原因和解决方案。首先,用户的问题涉及到的基本概念,所以我要先回顾的定义和原因。是由于浏览器的同源策略导致的,本地开发时前端和后端可能运行在不同端口,导致请求被阻止,而服务器上可能因为同源或者配置了反向代理所以没问题。 接下来,我需要分析本地开发时的具体原因。用户提到本地启动时有问题,而服务器上正常。这可能是因为本地开发时前端服务(比如localhost:8080)和后端API(比如localhost:3000)端口不同,触发了限制。而在服务器上,前端和后端可能部署在同一个下,或者服务器配置了反向代理,避免了问题。 然后,解决方案部分需要参考用户提供的引用内容。用户提供了三个引用,其中引用1和3提到了Vue中配置代理的方法,通过修改vue.config.js中的devServer.proxy,设置target为后端接口地址,并启用changeOrigin。引用2解释了的基本原理和预检请求的过程。这些信息需要整合到回答中,说明本地开发时如何配置代理来解决,而服务器可能已经处理了这些问题。 另外,需要对比本地服务器环境的不同。本地开发时,前端通过webpack dev server运行,请求需要代理转发;而生产环境中,前端静态文件和后端可能部署在同一名下,或者服务器(如Nginx)配置了代理,因此没有问题。 最后,生成相关问题时要围绕的原因、解决方案、配置差异等方面提问,帮助用户深入理解。</think>### Vue2本地启动问题服务器正常运行对比分析 #### 一、问题根本原因 浏览器同源策略限制导致请求被拦截,本地开发时前端服务(如$http://localhost:8080$)与后端接口(如$http://localhost:3000$)属于不同源,触发限制。而服务器环境通常通过以下方式规避: 1. 生产环境前后端部署在同一名下 2. 服务器配置反向代理(如Nginx) 3. 后端接口已配置CORS策略 #### 二、本地开发特有场景分析 1. **开发服务器差异** Vue CLI本地服务(Webpack DevServer)默认不处理请求,需显式配置代理规则[^3] 2. **浏览器安全策略** 本地开发时浏览器严格执行检测,而生产环境通过服务器部署规避了场景[^2] 3. **接口调用方式** 本地调试时直接调用不同源接口地址,生产环境通常使用相对路径或统一名 $$ \text{触发条件} = \begin{cases} 协议不同 & \text{(http/https)} \\ 名不同 & \text{(localhost/api.example.com)} \\ 端口不同 & \text{(8080/3000)} \end{cases} $$ #### 三、解决方案(Vue2项目) 1. **配置代理转发** 在$vue.config.js$中添加: ```javascript module.exports = { devServer: { proxy: { '/api': { target: 'http://localhost:3000', // 真实后端地址[^3] changeOrigin: true, // 关键参数[^1] pathRewrite: { '^/api': '' } } } } } ``` 2. **CORS头配置** 后端需添加响应头: ```http Access-Control-Allow-Origin: * Access-Control-Allow-Methods: GET,POST,PUT,DELETE ``` 3. **开发环境专用配置** 通过环境变量区分开发/生产环境接口地址: ```javascript // .env.development VUE_APP_API_BASE=/api // .env.production VUE_APP_API_BASE=https://api.example.com ``` #### 四、生产环境正常原因 1. **部署结构优化** 前端静态文件与API服务部署在同一名下(如Nginx同时托管静态资源和反向代理) 2. **服务解决方案** ```nginx server { location / { root /usr/share/nginx/html; } location /api { proxy_pass http://backend:3000; } } ``` 3. **HTTPS强制统一** 生产环境通常全站使用HTTPS协议,规避混合内容问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端小王hs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值