请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

rollup 引入axios 包 编译后api请求不能正常返回接口数据

Jokcy 老师,遇到一个问题,查了些文档还是没能解决,求助一下。

本地 npm run dev 能正常请求api并获取接口返回数据

npm run build 之后, serve -s dist 接口返回不在是json 数据 而是 html 字符串

simple test

axios 文件

import axios from 'axios/dist/axios'

const instance = axios.create({
  timeout: 10000,
});

// 请求拦截
instance.interceptors.request.use((config) => {
  // NProgress.start(); // start progress bar
  config.headers['accessToken'] = ''

  return config
})

// 响应拦截
instance.interceptors.response.use(
  (res) => {
    let data = res
    if (res.data) {
      data = res.data
    }
    if (res.data.data) {
      data = res.data.data
    }
    let status = Number(res.status) || 200
    let message = data.message || 'Network error'

    if (status === 401) {
      // TODO: 登录
    }

    // 如果请求为非200否者默认统一处理
    if (status !== 200) {
      return Promise.reject(message)
    }
    
    return Promise.resolve(data)
  },
  (error) => {
    return Promise.reject(error)
  },
)

export default instance



vite.config.js 配置文件

import {
  defineConfig
} from 'vite'
import vue from '@vitejs/plugin-vue'
import styleImport from 'vite-plugin-style-import'
import pxtorem from 'postcss-pxtorem'
import commonjs from '@rollup/plugin-commonjs'
import nodeResolve from '@rollup/plugin-node-resolve'

const {
  resolve
} = require('path')

// https://vitejs.dev/config/
export default defineConfig({
  resolve: {
    alias: {
      '@': resolve(__dirname, 'src'),
      'vue-i18n': 'vue-i18n/dist/vue-i18n.cjs.js',
    },
  },
  plugins: [
    vue(),
    nodeResolve(),
    commonjs(),
    styleImport({
      libs: [{
        libraryName: 'vant',
        esModule: true,
        resolveStyle: (name) => `vant/es/${name}/style`,
      }, ],
    }),
  ],
  css: {
    postcss: {
      plugins: [
        pxtorem({
          rootValue: 37.5,
          propList: ['*'],
        }),
      ],
    },
  },
  server: {
    host: '127.0.0.1',
    port: 3002,
    proxy: {
      '/v3': {
        target: 'https://domain.net',
        changeOrigin: true
      }
    }
  },
  build: {
    target: 'es2021',
    assetsDir: 'assets',
    // rollupOptions: {
    //   external: [
    //     'axios'
    //   ]
    // } 
  },
})

正在回答 回答被采纳积分+3

1回答

提问者 gongyangxu 2022-01-04 18:39:06

补充一下

本地 npm run dev 能正常请求api并获取接口返回数据
npm run build 之后, serve -s dist 没有返回接口数据, 而是 html 字符串(如下所示)

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <link rel="icon" href="/favicon.ico" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>simple test</title>
    <script type="module" crossorigin src="/assets/index.efae5de2.js"></script>
    <link rel="modulepreload" href="/assets/vendor.f0a64a3f.js">
    <link rel="stylesheet" href="/assets/index.3728a3b5.css">
  </head>
  <body>
    <div id="app"></div>
    
  </body>
</html>


0 回复 有任何疑惑可以回复我~
  • Jokcy #1
    是不是因为你dev有一个代理,但是build之后没有?
    回复 有任何疑惑可以回复我~ 2022-01-13 20:04:36
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信