VUE开发请求本地数据的配置,旧版本dev-server.js,新版本webpack.dev.conf.js,如何使用axios+express配置路由转发

本文介绍如何在Vue项目中配置本地数据请求,包括在webpack.dev.conf.js中设置代理请求来解决referer限制问题,以及从旧版本配置迁移到新版本的具体步骤。

VUE开发请求本地数据的配置,早期的vue-lic下面有dev-server.js和dev-client.js两文件,请求本地数据在dev-server.js里配置,最新的vue-webpack-template 中已经去掉了dev-server.js和dev-client.js 改用webpack.dev.conf.js代替,所以 配置本地访问在webpack.dev.conf.js里配置即可。

目前正在学习慕课网上的vue2.0教程-QQ音乐APP,由于视频演示的是webpack2.x,而自己操作实际的webpack已经是3.6.0了。现在有个需求就是通过请求https://c.y.qq.com/splcloud/f... 拿到歌单数据,因为有referer限制

所以需要代理请求。视频中老师的做法是在build下的dev-server.js下配置如下:

 

 

但是我目前的webpack版本较高,已经没有了这个dev-server.js文件,现在只需要在 webpack.dev.conf.js中按如下配置就好了:

第一步,在const portfinder = require('portfinder') 这一行下边写如下:

第二步,找到 devServer 对象,在它里面写如下:

 

再次运行npm run dev ,项目就能正常获取数据并且正常运行了!

总结如下:

webpack旧版本中,vue-cli生成初始化项目的时候build下生成dev-server.js文件,新版本中没有这个文件,它和webpack.dev.server.js都融合在一起了,配置axios和express代理的时候出了一些问题 

要把旧的

apiRoutes.get('/getDiscList', function (req, res) {
  
})

改为

before(app) {
    app.get('/api/getDiscList', (req, res) => {
   
     })
}

需要注意两点: 

1、要把旧版本的apiRoute.get()改为app.get()
2、要把原有的url地址'/getDiscList'改为'/api/getDiscList'

 

PS D:\Code\untitled01> cd vuepro01 PS D:\Code\untitled01\vuepro01> npm run dev > vuepro@1.0.0 dev > webpack-dev-server --inline --progress --config build/webpack.dev.conf.js (node:23744) [DEP0111] DeprecationWarning: Access to process.binding('http_parser') is deprecated. (Use `node --trace-deprecation ...` to show where the warning was created) (node:23744) [DEP0111] DeprecationWarning: Access to process.binding('http_parser') is deprecated. 13% building modules 32/76 modules 44 active ...\Code\untitled01\vuepro01\src\App.vue{ p 94% asset optimization ERROR Failed to compile with 4 errors 16:44:39 error in ./node_modules/axios/lib/helpers/toURLEncodedForm.js Module parse failed: Unexpected token (17:4) You may need an appropriate loader to handle this file type. | return helpers.defaultVisitor.apply(this, arguments); | }, | ...options | }); | } @ ./node_modules/axios/lib/defaults/index.js 7:0-62 @ ./node_modules/axios/lib/axios.js @ ./node_modules/axios/index.js @ ./src/main.js @ multi (webpack)-dev-server/client?http://localhost:8080 webpack/hot/dev-server ./src/main.js error in ./node_modules/axios/lib/adapters/fetch.js Module parse failed: Unexpected token (191:8) You may need an appropriate loader to handle this file type. | | const resolvedOptions = { | ...fetchOptions, | signal: composedSignal, | method: method.toUpperCase(), @ ./node_modules/axios/lib/adapters/adapters.js 4:0-43 @ ./node_modules/axios/lib/axios.js @ ./node_modules/axios/index.js @ ./src/main.js @ multi (webpack)-dev-server/client?http://localhost:8080 webpack/hot/dev-server ./src/main.js error in ./node_modules/axios/lib/platform/index.js Module parse failed: Unexpected token (5:2) You may need an appropriate loader to handle this file type. | | export default { | ...utils, | ...platform | } @ ./node_modules/axios/lib/defaults/index.js 8:0-44 @ ./node_modules/axios/lib/axios.js @ ./node_modules/axios/index.js @ ./src/main.js @ multi (webpack)-dev-server/client?http://localhost:8080 webpack/hot/dev-server ./src/main.js error in ./node_modules/axios/lib/core/mergeConfig.js Module parse failed: Unexpected token (6:69) You may need an appropriate loader to handle this file type. | import AxiosHeaders from "./AxiosHeaders.js"; | | const headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing; | | /** @ ./node_modules/axios/lib/axios.js 6:0-48 @ ./node_modules/axios/index.js @ ./src/main.js @ multi (webpack)-dev-server/client?http://localhost:8080 webpack/hot/dev-server ./src/main.js
最新发布
11-25
Vue项目中运行`npm run dev`时,Axios模块解析失败(Unexpected token)导致编译失败,可尝试以下解决办法: ### 检查Axios安装情况 确保Axios已正确安装,可使用以下命令重新安装Axios: ```bash npm install axios -S ``` 该命令会将Axios作为生产依赖安装到项目中,对应引用中提到的Axios安装方式 [^3]。 ### 检查导入语句 确认在代码中正确导入了Axios,导入语句应为: ```javascript import axios from 'axios'; ``` 避免导入语句出现拼错误等问题,参考引用中也提及了此导入语句 [^1][^3][^4]。 ### 检查Loader配置 报错信息 `Module parse failed: Unexpected token` 通常意味着需要合适的Loader来处理文件类型。可以检查项目的Webpack配置文件(一般是`webpack.config.js`或`vue.config.js`),确保有合适的Loader来处理JavaScript文件。例如,确保有`babel-loader`来处理ES6+语法: ```javascript module.exports = { module: { rules: [ { test: /\.js$/, exclude: /node_modules/, use: { loader: 'babel-loader', options: { presets: ['@babel/preset-env'] } } } ] } }; ``` ### 尝试清除缓存并重新安装依赖 有时候缓存文件可能会导致问题,可以尝试清除`npm`缓存并重新安装依赖: ```bash npm cache clean --force rm -rf node_modules npm install ``` ### 尝试更换Axios版本 虽然很多教程提到安装其他版本Axios可能无效,但也可以尝试更换不同版本的Axios,看是否能解决问题: ```bash npm install axios@<version> -S ``` 将`<version>`替换为具体的版本号。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值