Не удается разрешить @ достичь / диалог - PullRequest
1 голос
/ 05 июня 2019

Я разрабатываю приложение React с машинописью.Я пытаюсь импортировать @reach/dialog, но происходит сбой с ошибкой Module not found on its dependencies ( реакция-фокус-блокировка , реакция-удаление-прокрутка and проп-типы`).

Моя собственнаяскрипт компилируется.И некоторые другие библиотеки тоже компилируются, например react-simple-tree-menu.Но когда я пытаюсь импортировать @reach/dialog, происходит сбой из-за следующих ошибок:

ERROR in ./node_modules/react-focus-lock/dist/es2015/index.js
Module not found: Error: Can't resolve './MoveFocusInside' in '/Users/huang.ming.chang/Documents/feedback-widget/node_modules/react-focus-lock/dist/es2015'
 @ ./node_modules/react-focus-lock/dist/es2015/index.js 3:0-48 6:0-75
 @ ./node_modules/@reach/dialog/es/index.js
 @ ./src/components/Modal.tsx
 @ ./src/index.tsx

ERROR in ./node_modules/react-remove-scroll/dist/es2015/index.js
Module not found: Error: Can't resolve './component' in '/Users/huang.ming.chang/Documents/feedback-widget/node_modules/react-remove-scroll/dist/es2015'
 @ ./node_modules/react-remove-scroll/dist/es2015/index.js 1:0-43 2:0-25
 @ ./node_modules/@reach/dialog/es/index.js
 @ ./src/components/Modal.tsx
 @ ./src/index.tsx

ERROR in ./node_modules/prop-types/index.js
Module not found: Error: Can't resolve './factoryWithTypeCheckers' in '/Users/huang.ming.chang/Documents/feedback-widget/node_modules/prop-types'
 @ ./node_modules/prop-types/index.js 14:19-55
 @ ./node_modules/@reach/dialog/es/index.js
 @ ./src/components/Modal.tsx
 @ ./src/index.tsx

Я также пытался изменить свой веб-пакет, чтобы импортировать только main вместо module (изменив `mainFields на['main']), так что он импортирует только формат es5.Однако его по-прежнему не удалось разрешить.

Я пытался использовать create-react-app для создания пустого приложения и импорта @reach/dialog, и он правильно собирается.Итак, по-видимому, моя конфигурация webpack устарела.

Мой webpack.config.js выглядит следующим образом

module.exports = {
    mode: isDev ? MODES.DEV : MODES.PROD,
    target: "web",
    devtool: isDev ? "eval-source-map" : false,
    entry: './index.tsx',
    output: {
        path: './dist'
        filename: `main.js`,
        libraryTarget: "umd"
    },

    module: {
        rules: [
            {
                test: /\.(js|jsx|ts|tsx)$/,
                exclude: /node_modules/,
                use: [
                    {
                        loader: "babel-loader"
                    },
                    {
                        loader: "ts-loader"
                    }
                ]
            },
            {
                test: /\.(sa|sc|c)ss$/,
                use: [
                    MiniCssExtractPlugin.loader,
                    "css-loader",
                    {
                        loader: "postcss-loader",
                        options: {
                            config: {
                                path: paths.confDir
                            }
                        }
                    },
                    "sass-loader"
                ]
            },
            {
                test: /\.(gif|png|jpe?g|svg)$/i,
                use: [
                    {
                        loader: "file-loader",
                        options: {
                            name: `[name].[ext]`,
                            outputPath: `${widgetUIDir}/images`
                        }
                    }
                ]
            }
        ]
    },
    resolve: {
        extensions: ["js", "jsx", ".ts", ".tsx"],
        modules: ["node_modules"]
    },
    externals: ["react", "react-dom"],
    plugins: [...some plugins]
};

Мой ts.config.json

{
    "compilerOptions": {
        "allowJs": true,
        "module": "es6",
        "target": "es5",
        "jsx": "react",
        "outDir": "./dist/",
        "lib": ["es6", "dom", "es2017"],
        "moduleResolution": "node",
        "preserveConstEnums": true,
        "skipLibCheck": true,
        "strictNullChecks": true,
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "noImplicitAny": true,
        "esModuleInterop": true,
        "allowSyntheticDefaultImports": true
    },
    "include": ["**/*.ts", "**/*.tsx"],
    "exclude": ["node_modules"]
}

Пожалуйста, помогите указать, где ясделал неправильно.Этот конфиг работает с некоторыми старыми пакетами, но для некоторых новых пакетов он всегда сталкивается с этой проблемой.

Как настроить веб-пакет так, чтобы он мог переносить код es6 из node_modules?

И почему мойWebpack не может разрешить код es5 в @reach/dialog?

Спасибо!

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