Ошибка в модуле ввода не найдена и в веб-пакете - PullRequest
3 голосов
/ 12 февраля 2020

Я новичок в JavaScript и следую понятному руководству по узлам на Github . Но что бы я ни пытался во всех модулях, я получаю это сообщение об ошибке при запуске yarn dev: wds

    ERROR in Entry module not found: Error: Can't resolve './src' in 'C:\Users\Renate\projects'     
    ERROR in multi (webpack)-dev-server/client?http://localhost:8080 ./src Module not found: 
    Error: Can't resolve './src'  in 'C:\Users\Renate\projects'  @ multi (webpack)-dev- 
    server/client?http://localhost:8

Я пробовал это решение , но переустанавливаю babel-loader 7 не решил мою проблему. Я также попытался повторно установить весь модуль webpack, но это также не решило мою проблему.

Мой webpack.config.babel. js Файл:

// @flow

import path from 'path'
import webpack from 'webpack'

import { WDS_PORT } from './src/shared/config'
import { isProd } from './src/shared/util'

export default {
  entry: [
    'react-hot-loader/patch',
    './src/client',
  ],
  output: {
    filename: 'js/bundle.js',
    path: path.resolve(__dirname, 'dist/'),
    publicPath: isProd ? '/static/' : `http://localhost:${WDS_PORT}/dist/`,
  },
  module: {
    rules: [
      { test: /\.(js|jsx)$/, use: 'babel-loader', exclude: /node_modules/ },
    ],
  },
  devtool: isProd ? false : 'source-map',
  resolve: {
    extensions: ['.js', '.jsx'],
  },
  devServer: {
    port: WDS_PORT,
    hot: true,
    headers: {
      'Access-Control-Allow-Origin': '*',
    },
  },
  plugins: [
    new webpack.optimize.OccurrenceOrderPlugin(),
    new webpack.HotModuleReplacementPlugin(),
    new webpack.NamedModulesPlugin(),
    new webpack.NoEmitOnErrorsPlugin(),
  ],
}

My babelr c. json file:

{
  "presets": [
    "env",
    "flow",
    "react"
  ],
  "plugins": [
    "flow-react-proptypes"
  ]
}

Моя посылка. json file

{
  "name": "your-project",
  "version": "1.0.0",
  "license": "MIT",
  "browserslist": [
    "> 1%"
  ],
  "scripts": {
    "start": "yarn dev:start",
    "dev:start": "nodemon -e js,jsx --ignore lib --ignore dist --exec babel-node src/server",
    "dev:wds": "webpack-dev-server --progress",
    "prod:build": "rimraf lib dist && babel src -d lib --ignore .test.js && cross-env NODE_ENV=production webpack -p --progress",
    "prod:start": "cross-env NODE_ENV=production pm2 start lib/server && pm2 logs",
    "prod:stop": "pm2 delete server",
    "lint": "eslint src webpack.config.babel.js",
    "test": "yarn lint && flow && jest --coverage",
    "precommit": "yarn test",
    "prepush": "yarn test && yarn prod:build"
  },
  "dependencies": {
    "babel-polyfill": "^6.26.0",
    "compression": "^1.7.4",
    "express": "^4.17.1",
    "immutable": "4.0.0-rc.2",
    "react": "^16.12.0",
    "react-dom": "^16.12.0",
    "react-hot-loader": "^4.5.3",
    "react-redux": "^7.1.3",
    "redux": "^4.0.5",
    "redux-actions": "^2.6.5"
  },
  "devDependencies": {
    "@babel/core": "^7.8.4",
    "@babel/node": "^7.8.4",
    "@babel/preset-env": "^7.8.4",
    "@babel/preset-flow": "^7.8.3",
    "@babel/preset-react": "^7.8.3",
    "babel-cli": "^6.26.0",
    "babel-core": "^6.26.3",
    "babel-eslint": "^10.0.3",
    "babel-jest": "^25.1.0",
    "babel-loader": "7",
    "babel-plugin-flow-react-proptypes": "^25.1.0",
    "babel-preset-env": "^1.7.0",
    "babel-preset-flow": "^6.23.0",
    "babel-preset-react": "^6.24.1",
    "cross-env": "^7.0.0",
    "eslint": "^6.8.0",
    "eslint-config-airbnb": "^18.0.1",
    "eslint-plugin-compat": "^3.5.1",
    "eslint-plugin-flowtype": "^4.6.0",
    "eslint-plugin-import": "2.18.2",
    "eslint-plugin-jsx-a11y": "6.2.3",
    "eslint-plugin-react": "^7.18.3",
    "eslint-plugin-react-hooks": "1.7.0",
    "flow-bin": "^0.118.0",
    "husky": "^4.2.1",
    "jest": "^25.1.0",
    "nodemon": "^2.0.2",
    "pm2": "^4.2.3",
    "rimraf": "^3.0.2",
    "webpack": "^4.41.6",
    "webpack-babel-env-deps": "^1.6.3",
    "webpack-cli": "^3.3.10",
    "webpack-dev-server": "^3.10.3"
  },
  "type": "module"
}

Мой eslintr c. json file

  
{
  "extends": [
    "airbnb",
    "plugin:flowtype/recommended"
  ],
  "plugins": [
    "flowtype",
    "compat"
  ],
  "env": {
    "browser": true,
    "jest": true
  },
  "rules": {
    "semi": [2, "never"],
    "no-unexpected-multiline": 2,
    "compat/compat": 2,
    "linebreak-style": [2, "windows"]
  },
  "parser": "babel-eslint"
}

для справки, пожалуйста, найдите прикрепленный снимок структуры моей папки здесь.

folder structure

И если вы проверите эту страницу Github или эту , вы увидите, что есть еще с та же проблема, но пока у меня не получилось никакого решения. Надеюсь, вы можете помочь мне!

обновление

Я также попробовал предложение Алекса (см. Ответ ниже), не сработало.

    ...
    entry: [
       'react-hot-loader/patch',
       path.resolve(__dirname, './src/client')
       ],

    ...

Ответы [ 2 ]

3 голосов
/ 13 февраля 2020

Просто предложение: вы пытались разрешить проблемный путь c перед передачей его в веб-пакет? Что-то в этом роде: path.resolve(__dirname, './src/client') преобразует путь из относительного в абсолютный, и часто это помогает успокоить различные загрузчики.

...
  entry: [
    'react-hot-loader/patch',
    path.resolve(__dirname, './src/client'),
  ],

...
1 голос
/ 16 февраля 2020

Я проверил ваше репо и решил проблему с веб-пакетом. основная проблема заключалась в том, что каждый раз, когда вы импортировали файл jsx, вы должны написать расширение как jsx. а также были некоторые ошибки внутри компонентов, поэтому некоторые компоненты не были устранены. Вот один из них в button.jsx

// type Props = {
//   label: string,
//   handleClick: Function,
// }

, а также из-за изменения реализации многих пакетов, bundle. js выдает ошибку. например, для пакета реагирования на горячую перезагрузку нет необходимости импортировать это:

 import { AppContainer } from 'react-hot-loader'

проверьте документацию .

также многие пакеты babel были старой версией. поэтому я установил новые пакеты. Вы можете проверить пакет. json.

Реализация конфигурации веб-пакета также была неправильной. в webpack.config. js точка входа принимает относительный путь, а точка вывода - абсолютный путь. Я организовал webpack.config. js.

, этот проект также реализует код на стороне сервера, но для этого вам нужен еще один webpack.config. js для dev. а также для рендеринга на стороне сервера, вам нужно использовать ReactDOM.hydrate, а также есть слишком много важных вещей, которые этот проект не реализовал. вот репо:

модифицированный репо

...