Исправление и решение:
Короче говоря, благодаря @BoyWithSilver вот что я сделал, чтобы исправить свои проблемы:
- добавлен .less в раздел расширений
- удалены ненужные коды в webpack.config.json, например. удален плагин extract-text-webpack
- downgrade less с 3.0.1 на 2.7.0 исправлена куча ошибок: длина undefined в файле index.less в antd.
Обновление 3
Вот мой package.json
{
"name": "mobx-reactjsx",
"version": "1.0.0",
"description": dfsdfsdfsd",
"scripts": {
"start": "webpack-dev-server --config webpack.config.js --progress --inline",
"lint": "eslint src"
},
"keywords": [
"react",
"reactjs",
"boilerplate",
"mobx",
"starter-kit",
"firebase",
"re-base"
],
"author": "Winston Fan",
"license": "MIT",
"homepage": "https://horizontalvision.azurewebsites.net/",
"devDependencies": {
"autoprefixer": "^8.0.0",
"babel-core": "^6.9.1",
"babel-loader": "^7.1.2",
"babel-plugin-import": "^1.6.4",
"babel-plugin-transform-decorators-legacy": "^1.3.4",
"babel-preset-es2015": "^6.9.0",
"babel-preset-react": "^6.5.0",
"babel-preset-stage-1": "^6.5.0",
"css-loader": "^0.28.9",
"extract-text-webpack-plugin": "^3.0.2",
"less": "^3.0.1",
"less-loader": "^4.0.5",
"less-vars-to-js": "^1.2.1",
"postcss-loader": "^2.1.0",
"style-loader": "^0.20.2",
"webpack": "^3.5.5",
"webpack-dev-server": "^2.7.1"
},
"dependencies": {
"antd": "^3.2.1",
"firebase": "^4.9.1",
"mobx": "^3.5.1",
"mobx-react": "^4.4.1",
"mobx-react-devtools": "^4.2.15",
"re-base": "^3.2.2",
"react": "^16.2.0",
"react-dom": "^16.2.0"
}
}
Обновление 2:
После удаления параметра контекста: // context: path.resolve (__ dirname, 'dist') в webpage.config.js
добавлен
javascriptEnabled: true под less-loader в webpack.config.json
Я получил эти ошибки.
ОШИБКА в ./node_modules/antd/lib/button/style/index.less Ошибка сборки модуля:
/ * stylelint-disable декларация-bang-space-before, no-duplicate-selectors * / ^ Невозможно прочесть свойство length of undefined в F: \ temp \ Playground \ mobx-reactjsx \ node_modules \ antd \ lib \ style \ color \ bezierEasing.less (строка 1, столбец -1) @ ./node_modules/antd/lib/button/style/index.js 5: 0-23 @ ./src/index.js @ multi (webpack) -dev-server / client? http://localhost:8080 ./src/index.js
ОШИБКА в ./node_modules/antd/lib/style/index.less Ошибка сборки модуля:
/ * stylelint-disable декларация-bang-space-before, no-duplicate-selectors * / ^ Невозможно прочесть свойство length of undefined в F: \ temp \ Playground \ mobx-reactjsx \ node_modules \ antd \ lib \ style \ color \ bezierEasing.less (строка 1, столбец -1) @ ./node_modules/antd/lib/button/style/index.js 3: 0-33 @ ./src/index.js @ multi (webpack) -dev-server / client? http://localhost:8080 ./src/index.js
ОШИБКА в ./node_modules/antd/lib/style/index.less Ошибка сборки модуля: ModuleBuildError: Ошибка сборки модуля:
/ * stylelint-disable декларация-bang-space-before, no-duplicate-selectors * / ^ Невозможно прочесть свойство length of undefined в F: \ temp \ Playground \ mobx-reactjsx \ node_modules \ antd \ lib \ style \ color \ bezierEasing.less (строка 1, столбец -1) в runLoaders (F: \ temp \ Playground \ mobx-reactjsx \ node_modules \ webpack \ lib \ NormalModule.js: 195: 19) в F: \ temp \ Playground \ mobx- reactjsx \ node_modules \ loader-runner \ lib \ LoaderRunner.js: 364: 11 в F: \ temp \ Playground \ mobx-reactjsx \ node_modules \ loader-runner \ lib \ LoaderRunner.js: 230: 18 в context.callback (F : \ temp \ Playground \ mobx-reactjsx \ node_modules \ loader-runner \ lib \ LoaderRunner.js: 111: 13) в процессе process._tickCallback (internal / process / next_tick.js: 169: 7) @ ./node_modules/antd /lib/style/index.less @ ./node_modules/antd/lib/button/style/index.js @ ./src/index.js @ multi (webpack) -dev-server / client? http://localhost:8080 ./src/index.js
ОШИБКА в ./node_modules/antd/lib/button/style/index.less Ошибка сборки модуля: ModuleBuildError: Ошибка сборки модуля:
/ * stylelint-disable декларация-bang-space-before, no-duplicate-selectors * / ^ Невозможно прочесть свойство length of undefined в F: \ temp \ Playground \ mobx-reactjsx \ node_modules \ antd \ lib \ style \ color \ bezierEasing.less (строка 1, столбец -1) в runLoaders (F: \ temp \ Playground \ mobx-reactjsx \ node_modules \ webpack \ lib \ NormalModule.js: 195: 19) в F: \ temp \ Playground \ mobx- reactjsx \ node_modules \ loader-runner \ lib \ LoaderRunner.js: 364: 11 в F: \ temp \ Playground \ mobx-reactjsx \ node_modules \ loader-runner \ lib \ LoaderRunner.js: 230: 18 в context.callback (F : \ temp \ Playground \ mobx-reactjsx \ node_modules \ loader-runner \ lib \ LoaderRunner.js: 111: 13) в процессе process._tickCallback (internal / process / next_tick.js: 169: 7) @ ./node_modules/antd /lib/button/style/index.less @ ./node_modules/antd/lib/button/style/index.js @ ./src/index.js @ multi (webpack) -dev-server / client? http://localhost:8080 ./src/index.js Дочерний e xtract-text-webpack-plugin node_modules / extract-text-webpack-plugin / dist node_modules / css-loader / index.js! node_modules / less-loader / dist / cjs.js ?? ref - 1-2! node_modules / antd / lib / style / index.less: [0] ./node_modules/css-loader!./node_modules/less-loader/dist/cjs.js?{"modifyVars":{"@primary-color":"# 193D71 "}," root ":" F: // temp // Playground // mobx-reactjsx "," javascriptEnabled ": true}! ./ node_modules / antd / lib / style / index.less 302 байта {0} [ построено] [не удалось] [1 ошибка]
ERROR in ./node_modules/css-loader!./node_modules/less-loader/dist/cjs.js?{"modifyVars":{"@primary-color":"#193D71"},"root":"F://temp//Playground//mobx-reactjsx","javascriptEnabled":true}!./node_modules/antd/lib/style/index.less Module build failed: /* stylelint-disable declaration-bang-space-before,no-duplicate-selectors */ ^ Cannot read property 'length' of undefined in F:\temp\Playground\mobx-reactjsx\node_modules\antd\lib\style\color\bezierEasing.less
(строка 1, столбец -1) Дочерний extract-text-webpack-plugin node_modules / extract-text-webpack-plugin / dist node_modules / css-loader / index.js! node_modules / less-loader / dist / cjs.js ?? ref - 1-2! node_modules / antd / lib / button / style / index.less: [0] ./node_modules/css-loader!./node_modules/less-loader/dist/cjs.js?{"modifyVars " : {"@ primary-color": "# 193D71"}, "root": "F: // temp // Playground // mobx-reactjsx", "javascriptEnabled": true}! ./ node_modules / antd / lib / button / style / index.less 302 байта {0} [построено] [не удалось] [1 ошибка]
ERROR in ./node_modules/css-loader!./node_modules/less-loader/dist/cjs.js?{"modifyVars":{"@primary-color":"#193D71"},"root":"F://temp//Playground//mobx-reactjsx","javascriptEnabled":true}!./node_modules/antd/lib/button/style/index.less Module build failed: /* stylelint-disable declaration-bang-space-before,no-duplicate-selectors */ ^ Cannot read property 'length' of undefined in F:\temp\Playground\mobx-reactjsx\node_modules\antd\lib\style\color\bezierEasing.less
(строка 1, столбец -1) webpack: не удалось скомпилировать.
Обновление 1:
Вот мой webpack.config.json
var path = require('path');
var webpack = require('webpack');
const fs = require('fs');
const ExtractTextPlugin = require("extract-text-webpack-plugin");
const lessToJs = require('less-vars-to-js');
const themeVariables = lessToJs(fs.readFileSync(path.join(__dirname, './scripts/ant-theme-vars.less'), 'utf8'));
module.exports = {
watch: true,
context: path.resolve(__dirname, './src'),
devtool: 'source-map',
entry: [
'./src/index.js'
],
output: {
path: path.resolve(__dirname, './dist'),
filename: '[name].bundle.js'
},
plugins: [
new webpack.HotModuleReplacementPlugin(),
new ExtractTextPlugin('style.css')
],
resolve: {
extensions: ['.js', '.jsx']
},
module: {
rules: [{
test: /\.jsx?$/,
use: ['babel-loader'],
include: path.join(__dirname, 'src')
},
{
test: /\.less$/,
use: ExtractTextPlugin.extract([
{loader: "css-loader"},
{loader: "less-loader",
options: {
modifyVars: themeVariables,
root: path.resolve(__dirname, './')
}
}
])
},
{
test: /\.css$/,
use: ExtractTextPlugin.extract({
use: "css-loader"
})
},]
}
};
теперь сообщение об ошибке становится:
ОШИБКА в multi (webpack) -dev-server / client? http://localhost:8080 ./src/index. js Модуль не найден: Ошибка: не удается разрешить './src/index.js' в '/ Users / Winston / tmp / Playground / mobx-reactjsx / src' @ multi (webpack) -dev-server / client? http://localhost:8080 ./src/index.js
У меня есть index.js в папке проекта / src
Я пытаюсь интегрировать Ant Design с поддержкой Less и функцией импорта по запросу, которая находится здесь: https://ant.design/docs/react/use-with-create-react-app в разделе расширенного руководства.
В этом разделе он использует react-app-rewired, но мой проект использует webpack 3 (мой проект основан на этом https://github.com/mobxjs/mobx-react-boilerplate), поэтому в моем случае нельзя использовать команду rewired.
Итак, я нашел другую статью: https://medium.com/@GeoffMiller/how-to-customize-ant-design-with-react-webpack-the-missing-guide-c6430f2db10f
Вот мой код:
package.json
"start": "webpack-dev-server --hot --open",
webpack.config.json
const fs = require('fs');
const lessToJs = require('less-vars-to-js');
const themeVariables = lessToJs(fs.readFileSync(path.join(__dirname, './scripts/ant-theme-vars.less'), 'utf8'));
....
module:{
.....
rules:[
.....
test: /\.less$/,
use: [
{loader: "style-loader"},
{loader: "css-loader"},
{loader: "less-loader",
options: {
modifyVars: themeVariables
}
}
]
]
}
index.js
import {Button} from 'antd';
<Button type="primary">Hi!</Button>
.babelrc
{
"presets": [
"react",
"es2015",
"stage-1"
],
"plugins": [
["import", {"libraryName": "antd", "style": true} ],
"transform-decorators-legacy"
]
}
.less
файлы. Попробуйте добавитьresolve: {extensions: ['.js', '.jsx', '.less']},
в файл webpack.config.js - person Agney   schedule 17.02.2018