练手项目完结打包的时候遇到一些问题,特此记录

先贴我的vue.config.js文件的代码(vue-cli3构建的项目默认是没有此文件的,需手动添加)更多详细配置参考官方配置文档,我的项目不大不小,这些配置貌似就够了

module.exports = {

  // webpack配置,此处是因为我的项目打包时报错(WARNING in asset size limit: The following asset(s) exceed the recommended size limit ,因此有了这个webpack配置,若不存在静态资源过大,可不要这部分代码)
  configureWebpack: {
    // 警告 webpack 的性能提示
    performance: {
      hints: 'warning',
      // 入口起点的最大体积
      maxEntrypointSize: 50000000,
      // 生成文件的最大体积
      maxAssetSize: 30000000,
      // 只给出 js 文件的性能提示
      assetFilter: function (assetFilename) {
        return assetFilename.endsWith('.js');
      }
    }
  },
  baseUrl: './',
  // 1.默认为 "/":部署在一个域名的根路径上 ; 2. "./":所有的资源都会被链接为相对路径,这样打出来的包可以被部署在任意路径
  outputDir: 'dist',
  // 默认为 "dist",指打包后的资源放置的路径,放在dist文件夹下
  assetsDir: 'static',
  // 默认为:'' ,放置打包后生成的静态资源 (js、css、img、fonts) 的 (相对于 outputDir 的) 目录。
  indexPath: 'index.html',
  // Default: 'index.html' ,指定生成的 index.html 的输出路径 (相对于 outputDir)
  filenameHashing: true,
  // Default: true ,生成的静态资源在它们的文件名中包含了 hash 以便更好的控制缓存
  // pages:undefined,//在 multi-page 模式下构建应用
  lintOnSave: true,
  // Type: boolean|'error';Default: true; true:将 lint 错误输出为编译警告;'error':错误输出会导致编译失败
  runtimeCompiler: false,
  // Default: false, 设置为 true 后你就可以在 Vue 组件中使用 template 选项了,但是这会让你的应用额外增加 10kb 左右
  // transpileDependencies:[],//Default: [], 默认情况下 babel-loader 会忽略所有 node_modules 中的文件
  css: {
    modules: false,
    // Default: false, 设置为 true 后你就可以去掉文件名中的 .module 并将所有的 *.(css|scss|sass|less|styl(us)?) 文件视为 CSS Modules 模块。
    sourceMap: false // Default: false, 是否为 CSS 开启 source map。设置为 true 之后可能会影响构建的性能。
  },
  // productionSourceMap:{ type:Bollean,default:true } 生产源映射
  // 如果您不需要生产时的源映射,那么将此设置为false可以加速生产构建
  productionSourceMap: false,
  // devServer:{type:Object} 3个属性host,port,https

  // 以下为跨域配置(跨域是在开发时用到的,项目打包后是不需要配置跨域的),简单介绍下这里跨域配置的意思,我在本地开发的时候地址为localhost:8088,但是服务器的端口为localhost:80,要访问服务器的上的数据,就要跨域。将‘/MVS’代理为服务器的地址
  devServer: {
    port: 8088, // 端口号
    host: 'localhost',
    https: false, // https:{type:Boolean}
    open: true, // 配置自动启动浏览器
     // 配置跨域处理,只有一个代理
    proxy: {
      '/MVS': {
        target: 'http://127.0.0.1:80/',
        ws: false, //为true会让websocket默认连接
        changeOrigin: true,
        pathRewrite: {
          '^/MVS': '/MVS' // 重写接口访问
        }
      },
      '/foo': {
        target: '<other_url>'
      }
    } // 配置多个代理
  }
};

然后记录下遇到的问题:

首先是打包警告:WARNING in asset size limit: The following asset(s) exceed the recommended size limit (244 KiB)

出现这个问题后,启动服务器,访问localhost时页面出不来,

解决办法是加入那部分webpack配置代码

然后第二个问题是:

Failed to load resource: the server responded with a status of 404 (Not Found)
解决办法是加baseURL配置就行了
baseUrl: './',
要注意的是,baseURL配置和publicPath的配置会冲突,如果两者都存在会直接忽略baseURL,因此我直接删除了publicPath的配置