#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 и вверху, и использую его в блоке возврата.