vue-cli3 iview定制主题报错的解决

vue-cli3,iview使用定制主题时编译报错,如下:

ERROR  Failed to compile with 1 errors                          00:12:26

error  in ./src/css/theme.less

Module build failed (from ./node_modules/less-loader/dist/cjs.js):


// https://github.com/ant-design/ant-motion/issues/44
.bezierEasingMixin();
^
Inline JavaScript is not enabled. Is it set in your options?
      in g:\******\node_modules\iview\src\styles\color\bezierEasing.less (line 110, column 0)

 @ ./src/css/theme.less 4:14-225 14:3-18:5 15:22-233
 @ ./src/main.ts
 @ multi (webpack)-dev-server/client?http://192.168.1.4:8080/sockjs-node (webpack)/hot/dev-server.js ./src/main.ts

报错截图

通过修改webpack配置解决该问题,vue-cli3中对webpack配置进行了抽象,默认不显示相关的配置文件,可在项目根目录下新建并修改vue.config.js文件,项目运行时自动合并这些选项至webpack。


亲测有如下两种解决办法(修改vue.config.js):


1. 简单的配置方式
module.exports = {
  css: {
    loaderOptions: {
      less: {
        javascriptEnabled: true
      }
    }
  },
}
2. 链式操作(webpack-chain)
module.exports = {
  chainWebpack: config => {
    config.module.rule('less').oneOf('vue-modules').use('less-loader').tap(options => {
      options.javascriptEnabled = true;
      return options;
    });
    config.module.rule('less').oneOf('vue').use('less-loader').tap(options => {
      options.javascriptEnabled = true;
      return options;
    });
    config.module.rule('less').oneOf('normal-modules').use('less-loader').tap(options => {
      options.javascriptEnabled = true;
      return options;
    });
    config.module.rule('less').oneOf('normal').use('less-loader').tap(options => {
      options.javascriptEnabled = true;
      return options;
    });
  }
}

修改保存后重启项目即可





关于webpack-chain的用法:

由于 vue-cli3 对 webpack 的抽象,我们不能直观地查看配置文件,理解起来会比较困难,修改配置一头雾水。所以 vue-cli-server 提供了一个方法可以将 webpack 配置完整的输出(但不是一个有效的配置文件),并通过注释提供了相关的使用方法。

审查命令(在项目根路径下用命令行执行):
vue inspect > output.js
得到完整的配置文件,并包含使用方法:

相关注释
参考自:cli.vuejs.org

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值