Невозможно построить проект со связанным модулем локального узла - PullRequest
0 голосов
/ 22 октября 2018

У меня проблема с модулем связанных узлов.Итак, я работаю над приложением реагирования с настройкой дырок на основе веб-пакета 4. Кроме того, я создаю собственный модуль узла, который будет использоваться несколькими приложениями реагирования.Я пишу модуль в ES6, и я использую Babel для транспорта.Проблема заключается в том, что, как только я хочу запустить приложение реагирования с импортированным модулем, у меня появляется следующая ошибка:

Uncaught Error: Module build failed (from ./node_modules/eslint-loader/index.js): Error: No ESLint configuration found.

Как только я настроил eslinter в модуле, он сообщает о других проблемах (Похоже, что eslinter из реагирующего приложения пытается запустить модуль связанного узла, что, очевидно, не должно происходить для узловых модулей).

Проблема возникает, только если модуль связан.Как только я помещаю модуль непосредственно в каталог node_modules (он не связан), проблема исчезает, и все работает нормально.Итак, у вас есть идея, как исключить из конфигурации веб-пакета также связанные модули узлов?Это мой конфиг веб-пакета:

const Dotenv = require('dotenv-webpack');
const HtmlWebPackPlugin = require('html-webpack-plugin');

const htmlPlugin = new HtmlWebPackPlugin({
    template: './src/index.html',
    filename: './index.html',
});

const path = require('path');

module.exports = {
    entry: [
        'babel-polyfill',
        './src/index.jsx',
    ],
    resolve: {
        extensions: ['.js', '.jsx'],
        alias: {
            modules: path.resolve(__dirname, 'src/modules/'),
            routes: path.resolve(__dirname, 'src/routes/'),
            lib: path.resolve(__dirname, 'src/lib/'),
            src: path.resolve(__dirname, 'src/'),
        },
    },
    module: {
        rules: [
            {
                test: /\.jsx?$/,
                exclude: /node_modules/,
                use: [
                    'babel-loader',
                    'eslint-loader',
                ],
            },
            {
                test: /\.s?css$/,
                use: [
                    'style-loader', // creates style nodes from JS strings
                    'css-loader', // translates CSS into CommonJS
                    'sass-loader', // compiles Sass to CSS, using Node Sass by default
                ],
            },
            {
                test: /\.(ttf|woff|woff2)$/,
                use: [
                    {
                        loader: 'file-loader',
                        options: {
                            outputPath: 'public/fonts',
                            name: '[name]-[hash].[ext]',
                        },
                    },
                ],
            },
        ],
    },
    devServer: {
        historyApiFallback: true,
    },
    plugins: [htmlPlugin, new Dotenv()],
};

, а это мой .eslintrc файл в приложении реакции:

{
  "extends": "airbnb",
  "parser": "babel-eslint",
  "env": {
    "browser": true,
    "jest": true
  },
  "rules": {
    "class-methods-use-this": 0,
    "global-require": 0,
    "import/no-named-as-default": 0,
    "indent": ["error", 4],
    "jsx-a11y/label-has-associated-control": [ 2, {
      "controlComponents": ["Input"],
      "depth": 3,
    }],
    "jsx-a11y/label-has-for": 0,
    "max-len": ["error", { "code": 120 }],
    "react/jsx-indent": ["error", 4],
    "react/jsx-indent-props": ["error", 4],
    "react/prefer-stateless-function": ["off"],
    "no-underscore-dangle": 0,
    "import/no-extraneous-dependencies": ["error", { "devDependencies": ["./src/testutils/**/*.js", "./src/**/*.spec.js"] }],
    "react/style-prop-object": ["off"]
  },
  "settings": {
    "import/resolver": "webpack"
  }
}

1 Ответ

0 голосов
/ 22 октября 2018

Хорошо, я нашел проблему и решение.Это потому, что веб-пакет не видит связанный модуль как каталог под node_modules, а как абсолютный путь, где находится модуль (в моем случае это /var/workspace/mymoduledirectory).В конце концов, решение может заключаться в добавлении абсолютного пути к ключу exclude в конфигурации веб-пакета, например:

exclude: [/node_modules/, '/var/workspace/themoduledirectoryname'],

Кроме того, решение будет использовать include вместо exclude и определять толькофайлы, которые мы хотим скопировать / перенести, например:

include: './src',
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...