react 项目中antd加载的坑:.bezierEasingMixin();

543 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第12天,点击查看活动详情

周日本要加班赶赶进度,奈何家里电脑环境出现了问题,竟然使我一点需求未写。那就记录下.bezierEasingMixin();问题帮大家避坑。

问题表现

".bezierEasingMixin(); Inline JavaScript is not enabled. Is it set in your options?"
上面这句话是终端输出,提示意思要配置javaScript enabled,但是哪里配置?如何配置?也是一脸懵圈。

问题原因

经过网上查询得知,.bezierEasingMixin();这个问题,主要是因为webpack从3升级到4,造成的与less版本不兼容。所以选择正确的版本应该就能解决,可问题是我们根本没法知道它到底和那个less版本兼容。另一个原因是antd的动态引入也会引起上述问题。

解决方式

知道引起的原因,找解决方法就简单了很多。你也可以先想下,再往下读。
法一:就是降低webpack到3,这就使的升级问题消失了,但由于项目刚刚升级到4,从技术角度也应该升级到4,不应该因为一个问题的出现而放弃了webpack4带来的性能提升。法二:就是降低less版本,虽然我们不知道less真正能与之适配的版本,但是可以给他降低到一个很低版本就可以了。这里建议大家使用,3.0以下版本。法三:就issue提示,结合社区方案,我们可以通过修改less-loader的配置。加上javascriptEnabled: true;这样也就行了。法四:由于我这次是在react项目中遇到的,并且项目中使用了craco。那么就可以通过安装craco-less然后在craco.config.js文件中配置javascriptEnabled:true;法五:降低node到12.18.3,这里能够解决的原因我也不清楚,但是解决后项目出现了其他问题。这个方法给出来,只是提醒大家可能是node版本问题,但不建议使用这个。前面四个中选择即可。

实战

法二操作过程如下:

   终端> npm uninstall less-loader //卸载当前less-loader
   终端> npm install less-loader@2.7.6 --save

法三配置如下:

 css: {
    loaderOptions: {
        less: {
            javascriptEnabled: true // 该解决方案核心配置
        }
    }
  }

法四配置过程如下:

终端> npm i craco-less //安装craco-less依赖

// 以下在craco.confige.js中
const CracoLessPlugin = require('craco-less');

module.exports = {
    plugins: [
        {
            plugin: CracoLessPlugin,
            options: {
              lessLoaderOptions: {
                  lessOptions: {
                      javascriptEnabled: true
                  }
              }
            }
        }
    ]
}

结束语

计划总是赶不上变化,本想加班赶进度,竟然又是踩坑的一天。人生百态需要笑对,愿明天的坑都被今天趟平,今天过后一帆风顺、一马平川、好运连绵。关注+点赞+收藏。谢谢大家🙏

顺境中的好运,为人们所希冀;逆境中的好运,则为人们所惊奇。