Опубликовать компонент react, написанный с помощью TypeScript, в npm, но не определен при его импорте

#reactjs #typescript #npm #webpack #npm-publish

#reactjs #typescript #npm #webpack #npm-опубликовать

Вопрос:

Я попытался опубликовать свой собственный компонент react, написанный с помощью TypeScript, в npm. Я опубликовал его удачно, но когда я создал новый проект react и импортировал пакет npm, который я создал, произошла ошибка:

Ошибка: недопустимый тип элемента: ожидалась строка (для встроенных компонентов) или класс / функция (для составных компонентов), но получено: не определено. Вероятно, вы забыли экспортировать свой компонент из файла, в котором он определен, или, возможно, перепутали импорт по умолчанию и именованный импорт.

изображение ошибки

Но я уверен, что я не злоупотреблял именованным экспортом и экспортом по умолчанию. Поэтому я думаю, что, возможно, что-то не так с моей конфигурацией webpack или tsconfig.

мой webpack.config.json

 const path = require('path');

module.exports = {
  mode: 'none',
  entry: path.join(__dirname, 'src', 'index.tsx'),
  target: 'web',
  resolve: {
    extensions: ['.ts', '.tsx', '.js', '.jsx', '.css']
  },
  module: {
    rules: [
      {
        test: /.(ts|tsx)$/,
        use: "babel-loader",
        exclude: '/node_modules/',
      },
      {
        test: /.(ts|tsx)$/,
        use: 'awesome-typescript-loader',
        exclude: '/node_modules/'
      },
      {
        test: /.css$/i,
        use: ['style-loader', 'css-loader'],
      },
    ],
  },
  output: {
    filename: 'index.js',
    path: path.resolve(__dirname, 'dist')
  }
}

  

мой tscongig.json

 {
  "compilerOptions": {
    "outDir": "./dist",
    "target": "es6",
    "module": "commonjs",
    "skipLibCheck": true,
    "allowSyntheticDefaultImports": true,
    "noImplicitAny": false,
    "strictNullChecks": false,
    "removeComments": true,
    "declaration": true,
    "declarationMap": true,
    "sourceMap": true,
    "isolatedModules": true,
    "esModuleInterop": true,
    "jsx": "react",
    "typeRoots": [
      "dist/index.d.ts",
      "node_modules/@types"
    ]
  },
  "include": [
    "./src/*",
  ],
  "exclude": [
    "node_modules",
    "dist"
  ]
}
  

package.json

 {
  "name": "myname",
  "version": "1.0.42",
  "description": "some text",
  "main": "dist/index.js",
  "types": "dist",
  "scripts": {
    "build": "webpack --config webpack.config.js --mode production"
  },
  "repository": {
    "type": "git",
    "url": "some url"
  },
  "author": "secret",
  "license": "MIT",
  "dependencies": {},
  "devDependencies": {
    "@babel/core": "^7.12.3",
    "@babel/preset-env": "^7.12.1",
    "@babel/preset-react": "^7.12.1",
    "@babel/preset-typescript": "^7.12.1",
    "@types/react": "^16.9.53",
    "@types/react-dom": "^16.9.8",
    "@types/webpack": "^4.41.23",
    "awesome-typescript-loader": "^5.2.1",
    "babel-loader": "^8.1.0",
    "css-loader": "^5.0.0",
    "react": "^17.0.1",
    "react-dom": "^17.0.1",
    "style-loader": "^2.0.0",
    "typescript": "^4.0.3",
    "webpack": "^5.2.0",
    "webpack-cli": "^4.1.0"
  }
}
  

и моя точка входа index.tsx

 import someComponent from './someComponent';

export { someComponent };

  

и я уверен, что SomeComponent является экспортом по умолчанию из другого файла.

Кто-нибудь может помочь мне решить эту проблему?

Комментарии:

1. Ошибка говорит о компоненте приложения, может быть, вы должны показать нам, как это выглядит?

2. Компонент приложения @DennisVash — это компонент по умолчанию, созданный create-react-app, я просто импортирую свой пакет, опубликованный в npm и вверху, и использую его в блоке возврата.