解决方案:Springboot+Vue3+Mybatis+Axios 前后端分离项目中 遇见的若干报错和踩坑避坑(一)

missing script:serve报错

问题:

npm ERR! missing script: serve
npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users.........

问题原因:
这个错误一般是忘记进入项目目录里面而导致的。
解决方案:
只需要先 cd 切换到创建的项目的目录里面再使用npm run
serve,否则就会报错

跨域限制:CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.

问题:使用Axios无法成功跨域

Access to XMLHttpRequest at 'http://localhost:8080/api' from origin 'http://localhost:8088' has been blocked by CORS policy: 
No 'Access-Control-Allow-Origin' header is present on the requested resource.

问题原因:proxy代理没配置好,或者springboot端的接口对应不上。

解决方案:1、检查vue.config.js

module.exports = {
  devServer: { // 配置跨域代理
    host: 'localhost',
    port: '8088', //vue程序端口换成8088,避免与Spring Boot项目端口冲突
    https: false,
    open: true,
    proxy: {
      '/api': { // 匹配所有以 '/api'开头的请求路径
        target: 'http://localhost:8080', // 代理目标的基础路径
        changeOrigin: true, // 支持跨域
        pathRewrite: { // 重写路径: 去掉路径中开头的'/api'
          '^/api': ''
        }
      }
    }
  }
}

2、检查axios请求:

axios.get('http://localhost:8080/api/connect').then(function(response) {
            if (response.data) {
              console.log(response.data)
            }
          }).catch(function(error){
            console.log(error);
          })
          console.log("response done!")

3、检查后台代码,在后台controller加上@CrossOrigin注解

@RestController
@CrossOrigin
public class VueTest {
    @GetMapping("/api/connect")
    public String hivue(){
        System.out.println("vue connect success!");
        //System.out.println(mail);
        //System.out.println(password);
        return "regist successs";
    }
}

this.axios is not a function

问题:this.axios is not a function或者this.$axios is not a function

解决方案:Vue抛弃了this的概念,不要再用this.

运行项目失败 显示:npm ERR! code ELIFECYCLE errno 1 …@0.1.0 serve: vue-cli-service serve

问题:

code ELIFECYCLE
npm ERR! errno 1
npm ERR! usermana@0.1.0 serve: `vue-cli-service serve`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the usermana@0.1.0 serve script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

问题原因:可能是在某次关闭项目时出错,是node_modules丢失了部分文件

解决方案:删除node_modules,重新配置和安装依赖包
首先删除node_modules,然后强制清除缓存,然后重新安装

rm package-lock.json
npm cache clear --force
npm install
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,下面是一个简单的示例: ### 后端部分 #### 1. 创建Spring Boot项目 使用Spring Initializr创建一个基于Maven的Spring Boot项目,勾选Web、MyBatis、MySQL、Lombok等依赖。 #### 2. 配置数据库连接 在`application.properties`文件配置数据库连接信息: ``` spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai spring.datasource.username=root spring.datasource.password=123456 ``` #### 3. 创建数据库表 创建一个名为`user`的表,包含`id`、`username`、`password`三个字段。 #### 4. 创建实体类和Mapper 创建一个名为`User`的实体类,对应数据库的`user`表。同时,创建一个名为`UserMapper`的Mapper接口,用于操作数据库的`user`表。 #### 5. 创建Controller 创建一个名为`UserController`的Controller类,用于处理用户相关的请求。 ```java @RestController @RequestMapping("/user") public class UserController { @Autowired private UserService userService; @PostMapping("/register") public Result register(@RequestBody User user) { userService.register(user); return Result.success(); } @PostMapping("/login") public Result login(@RequestBody User user) { User result = userService.login(user.getUsername(), user.getPassword()); if (result != null) { return Result.success(result); } else { return Result.error("用户名或密码错误"); } } } ``` #### 6. 创建Service 创建一个名为`UserService`的Service接口,包含用户注册和登录的方法。 ```java public interface UserService { void register(User user); User login(String username, String password); } ``` 创建一个名为`UserServiceImpl`的Service实现类,实现`UserService`接口的方法。 ```java @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public void register(User user) { userMapper.insert(user); } @Override public User login(String username, String password) { return userMapper.selectByUsernameAndPassword(username, password); } } ``` #### 7. 创建返回结果类 创建一个名为`Result`的类,用于封装接口的返回结果。 ```java @Data @NoArgsConstructor @AllArgsConstructor public class Result { private int code; private String msg; private Object data; public static Result success() { return new Result(200, "success", null); } public static Result success(Object data) { return new Result(200, "success", data); } public static Result error(String msg) { return new Result(500, msg, null); } } ``` ### 前端部分 #### 1. 创建Vue项目 使用Vue CLI创建一个基于Vue.js的项目。 #### 2. 安装Axios 使用npm安装Axios。 ``` npm install axios --save ``` #### 3. 创建登录和注册组件 创建一个名为`Login`的组件,包含用户名和密码输入框、登录按钮和注册链接。 ```html <template> <div class="login"> <h2>登录</h2> <form> <div class="form-group"> <label>用户名:</label> <input type="text" class="form-control" v-model="username"> </div> <div class="form-group"> <label>密码:</label> <input type="password" class="form-control" v-model="password"> </div> <button type="button" class="btn btn-primary" @click="login">登录</button> </form> <div class="register-link"> <a href="javascript:void(0)" @click="goRegister">没有账号?去注册</a> </div> </div> </template> <script> import axios from 'axios' export default { data () { return { username: '', password: '' } }, methods: { login () { axios.post('/user/login', { username: this.username, password: this.password }).then(res => { if (res.data.code === 200) { alert('登录成功') } else { alert(res.data.msg) } }).catch(err => { console.error(err) }) }, goRegister () { this.$router.push('/register') } } } </script> ``` 创建一个名为`Register`的组件,包含用户名、密码和确认密码输入框、注册按钮和登录链接。 ```html <template> <div class="register"> <h2>注册</h2> <form> <div class="form-group"> <label>用户名:</label> <input type="text" class="form-control" v-model="username"> </div> <div class="form-group"> <label>密码:</label> <input type="password" class="form-control" v-model="password"> </div> <div class="form-group"> <label>确认密码:</label> <input type="password" class="form-control" v-model="confirmPassword"> </div> <button type="button" class="btn btn-primary" @click="register">注册</button> </form> <div class="login-link"> <a href="javascript:void(0)" @click="goLogin">已有账号?去登录</a> </div> </div> </template> <script> import axios from 'axios' export default { data () { return { username: '', password: '', confirmPassword: '' } }, methods: { register () { if (this.password !== this.confirmPassword) { alert('两次输入密码不一致') return } axios.post('/user/register', { username: this.username, password: this.password }).then(res => { if (res.data.code === 200) { alert('注册成功,请登录') this.$router.push('/login') } else { alert(res.data.msg) } }).catch(err => { console.error(err) }) }, goLogin () { this.$router.push('/login') } } } </script> ``` #### 4. 配置路由 在`router/index.js`文件配置路由。 ```javascript import Vue from 'vue' import Router from 'vue-router' import Login from '@/components/Login' import Register from '@/components/Register' Vue.use(Router) export default new Router({ routes: [ { path: '/', redirect: '/login' }, { path: '/login', component: Login }, { path: '/register', component: Register } ] }) ``` #### 5. 运行项目 启动Spring Boot项目Vue项目后,访问`http://localhost:8080`即可看到登录页面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

中杯可乐多加冰

请我喝杯可乐吧,我会多加冰!

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

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

打赏作者

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

抵扣说明:

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

余额充值