文章
问答
冒泡
nextjs 9 和 antd 组合使用

在nextjs项目中,使用antd作为组件包,由于需要做一些样式的定制,所以使用了less文件。

但是,在使用启动时候出现如下报错:

[ error ] ./node_modules/antd/es/config-provider/style/index.less

// https://github.com/ant-design/ant-motion/issues/44
.bezierEasingMixin();
^
Inline JavaScript is not enabled. Is it set in your options?
      in /Users/bane/Develop/workspace/moensun/ithere/it-here-web-topic/node_modules/antd/es/style/color/bezierEasing.less (line 110, column 0)

根据报错提示,是由于less文件中存在javascript语句,需要设置。

在nextconfig.js 下配置

lessLoaderOptions:
    {
        javascriptEnabled: true,
        modifyVars: themeVariables // make your antd custom effective
    },


另外,nextjs 9 和antd 一起用的时候,需要对antd做一些独立配置

总体配置如下:

const withLess = require('@zeit/next-less');
const lessToJS = require('less-vars-to-js');
const fs = require('fs');
const path = require('path');

const themeVariables = lessToJS(
    fs.readFileSync(path.resolve(__dirname, './app/assets/antd-custom.less'), 'utf8')
);

if (typeof require !== 'undefined') {
    require.extensions['.less'] = file => {
    }
}

module.exports = withLess({
    lessLoaderOptions:
        {
            javascriptEnabled: true,
            modifyVars: themeVariables // make your antd custom effective
        },
    webpack: (config, {isServer}) => {
        if (isServer) {
            const antStyles = /antd\/.*?\/style.*?/;
            const origExternals = [...config.externals];
            config.externals = [
                (context, request, callback) => {
                    if (request.match(antStyles)) return callback();
                    if (typeof origExternals[0] === 'function') {
                        origExternals[0](context, request, callback)
                    } else {
                        callback()
                    }
                },
                ...(typeof origExternals[0] === 'function' ? [] : origExternals),
            ];

            config.module.rules.unshift({
                test: antStyles,
                use: 'null-loader',
            })
        }
        return config
    }
});

antd
next

关于作者

落雁沙
非典型码农
获得点赞
文章被阅读