vue-cli 3.0 + elementUI踩坑记录

公司的一个后台项目,自己人用,没有兼容性要求。

一直兼容ie8的我,是时候放飞自我了。

下面是暂时遇到的一些问题。

error:Cannot assign to read only property 'exports' of object '#<Object>'

import 和 module.exports (node语法)不能在一个文件内同时使用,可用 export default

~~~~~~~~~~~~~~~~

有时候封装模块js里需要使用到element-ui某些功能,如弹窗:

import {Notification} from 'element-ui';

Notification.error({

  title: '错误',

  message: '这是条错误消息'

});

~~~~~~~~~~~~~~~~

el-input 可以通过绑定@keyup.enter.native来实现覆盖原有事件

el-button不可以,可以自己注册一个事件实现回车登录事件

document.onkeyup = function (e) {

var code = e.charCode || e.keyCode;

if (code == 13) {

self.submitForm('ruleForm2');

}

}

~~~~~~~~~~~~~~~~

报错:did you register the component correctly? For recursive components, make sure to provide the "name" option(组件引进来后没有注册)

export default {

  name: 'home',

  components: {

    HelloWorld//这里注册

  }

}

~~~~~~~~~~~~~~~~

在vue-cli3中使用less

安装less依赖包,<style ></style>

在style标签内导入外部less

@import "./style/index.less"; @import url("./style/index.less");

在main.js导入外部less

import './style/index.less';

在main.js里引入了正确路径的公共index.less,直接在里面定义变量@width:100px;在别的页面直接引用是不生效的(about.vue)

~~~~~~~~~~~~~~~~

写项目在本地的地址调用线上接口就存在跨域,vue.config.js proxy设置:

module.exports = {

  baseUrl: './',//打包后打开index文件报错设置此处

  devServer: {

    port: 8085, // 端口号

    host: 'localhost',

    open: true, //配置自动启动浏览器

    proxy: {//设置代理处理跨域问题

      '/api': {

        target: 'http://192.168.xxx.xxx:8501/',

        ws: true,

        changOrigin: true,

        pathRewrite: function(path, req) { //重写路径,不然会在你的目标路径里多一个/api,导致路径不对

          return path.replace('/api', '');//这注意了,这里正则写的好,下面的匹配怎么写都没问题,我这里就是随便复制文档来用,下面写个api2和这里匹配冲突了,后来改成'/second'

        }

      },

      '/second': {

        target: 'http://192.168.xxx.xxx:8891/',

        ws: true,

        changOrigin: true,

        pathRewrite: function(path, req) {

          return path.replace('/second', '');

        }

      }

    }

  }

}