ts-loader, antd 和, 找不到模块索引



在我的项目中,我正在使用antd react 组件库,我需要使用 ts-loader 以合理的方式加载组件。现在我正在尝试摔跤 webpack 以转译更少的文件,但我收到以下错误:

ERROR in ./node_modules/antd/lib/button/style/index.less
Module build failed: Error: Cannot find module 'less'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:594:15)
at Function.Module._load (internal/modules/cjs/loader.js:520:25)
...

看起来要么没有安装较少的加载程序(确实如此(,要么配置不正确(应该是(。这是我的 webpack 配置:

webpack.dev.js

module: {
rules: [
{
test: /.scss$/,
loaders: ['style-loader', 'css-loader', 'postcss-loader', 'sass-loader']
},
{
test: /.css$/,
loaders: ['style-loader', 'css-loader']
},
{
test: /.less$/,
loader: 'less-loader' // compiles Less to CSS
},
]
},

Common.webpack.js

const getTsLoaderRule = env => {
const rules = [
{ loader: 'cache-loader' },
{
loader: 'ts-loader',
options: {
transpileOnly: true,
getCustomTransformers: () => ({
before: [ tsImportPluginFactory({
libraryDirectory: 'es',
libraryName: 'antd',
style: 'css',
})]
}),
compilerOptions: {
module: 'es2015'
}
},
}
];
if (env === 'development') {
rules.unshift({
loader: 'react-hot-loader/webpack'
});
}
return rules;
};
...
module: {
rules: [
{
test: /.tsx?$/,
use: getTsLoaderRule(options.env),
include: [utils.root('./src/main/webapp/app')],
exclude: ['node_modules']
},
{
test: /.(jpe?g|png|gif|svg|woff2?|ttf|eot)$/i,
loaders: ['file-loader?hash=sha512&digest=hex&name=content/[hash].[ext]']
},
{
enforce: 'pre',
test: /.jsx?$/,
loader: 'source-map-loader'
},
{
test: /.tsx?$/,
enforce: 'pre',
loaders: 'tslint-loader',
exclude: ['node_modules']
}
]
},

有什么想法吗?

错误消息不是关于配置错误的less-loader,而是缺少less,这是包的对等依赖关系。运行npm i -S less进行安装。

最新更新