解决React18+ts项目导入模块的声明报错

在Vite项目中,由于不支持直接将@别名指向src目录,需要在vite.config.ts中手动配置。通过引入path模块并使用resolve.alias设置别名。同时,为了解决TS报错,需安装@types/node并更改import语句。在tsconfig.json中配置baseUrl和paths以实现路径提示。另外,对于React模块导入的错误,可能需要在vite-env.d.ts中进行声明,以及调整tsconfig.json的moduleResolution选项来处理Element与ReactNode类型的不匹配问题。

路径配置

项目路径别名的配置
ts对@指向src的目录提示是不支持的
所以需要手动配置@符号指向
在vite.config.ts

import path from 'path'
export default defineConfig({
	plugins:[react()],
	resolve:{
		alias:{
		"@":path.resolve(__dirname, './src')
		}
	}
})
	

但这时path模块引入会报错,但是其实我们已经有node所以就已经有path模块,知识缺少声明配置。所以是需要安装关于node这个库的ts声明配置:

npm i -D @types/node

安装后没有爆红,如果import后面的path爆红则修改引入:

import * as  path from 'path'

但是这时输入@是没有提示路径的
则配置路径别名提示,在tsconfig.json 中

{
  "compilerOptions": {
    //...
    "baseUrl": "./",
    "paths": {
      "@/*": [
        "src/*"
      ]
    }
  },

报错

react 导入模块报错:
导入路径不能以“.tsx”扩展名结束。考虑改为导入“./App.js”
在这里插入图片描述
在声明文件vite-env.d.ts

/// <reference types="vite/client" />
declare module '*.tsx'

报错:类型“Element”的参数不能赋给类型“ReactNode”的参数。
类型“Element”缺少类型“ReactPortal”中的以下属性: key, children, type, props
在这里插入图片描述

在tsconfig.js

 "compilerOptions": {
	//...
    "moduleResolution": "node",
    
  },
<think>嗯,用户问的是如何在React + TypeScript + Vite项目中配置ESLint。首先,我需要回忆一下ESLint的基本配置步骤,以及结合这些技术栈的特殊要求。 首先,Vite本身可能不会自带ESLint,所以需要手动安装。React和TypeScript项目需要对应的ESLint插件和解析器。可能需要安装eslint、eslint-plugin-react、@typescript-eslint/parser和@typescript-eslint/eslint-plugin这些包。对了,还有可能需要配置Vite的插件,不过可能用户只需要ESLint在开发时工作,不一定需要集成到Vite构建流程中。 然后,用户使用的是TypeScript,所以要确保ESLint能正确解析.ts.tsx文件。可能需要修改ESLint的配置文件,设置parser为@typescript-eslint/parser,并配置plugins和extends。记得extends里可能需要包括airbnb或者其他流行配置,加上plugin:react/recommended和plugin:@typescript-eslint/recommended这些。 另外,Vite项目中的路径别名,比如@/src,可能需要告诉ESLint如何解析,否则它会报错找不到模块。这时候可能需要安装eslint-import-resolver-alias,并在settings里配置别名。 还有,用户可能需要在package.json里添加lint脚本,方便运行检查。或者集成到IDE中,比如VSCode的ESLint插件,这样保存时自动修复。 可能还需要注意与Prettier的兼容性,如果用户已经用了Prettier,需要安装eslint-config-prettier来避免规则冲突。 然后,根据用户提供的引用内容,他们之前配置过路径别名,所以在ESLint配置里可能需要同样的设置。引用中的vite.config.ts配置了@作为src的别名,所以在ESLint的解析器里也需要对应设置。 总结步骤大概是:安装依赖,创建ESLint配置文件,配置解析器、插件、扩展,设置规则,处理路径别名,添加脚本命令,可能还需要配置IDE或Prettier。 现在需要检查是否有遗漏的步骤,比如是否需要配置env或者parserOptions里的ecmaVersion,或者sourceType。另外,React版本可能需要指定,以避免react/jsx-uses-react的警告,尤其是在React 17+之后可能不需要显式导入React了,所以对应的ESLint规则可能需要调整。 最后,生成相关问题,比如如何集成Prettier,如何配置Vite插件,或者如何处理特定规则错误等。</think>### React + TypeScript + Vite 项目配置 ESLint 分步指南 #### 1. 安装 ESLint 及相关依赖 运行以下命令安装基础包: ```bash npm install eslint eslint-plugin-react @typescript-eslint/parser @typescript-eslint/eslint-plugin --save-dev ``` - `eslint`: ESLint 核心库 - `eslint-plugin-react`: React 语法规则支持 - `@typescript-eslint/parser`: TypeScript 解析器 - `@typescript-eslint/eslint-plugin`: TypeScript 规则扩展 #### 2. 初始化 ESLint 配置 在项目根目录创建 `.eslintrc.cjs` 文件,内容如下: ```javascript module.exports = { env: { browser: true, es2021: true, node: true }, extends: [ "eslint:recommended", "plugin:react/recommended", "plugin:@typescript-eslint/recommended" ], parser: "@typescript-eslint/parser", parserOptions: { ecmaFeatures: { jsx: true }, ecmaVersion: "latest", sourceType: "module" }, plugins: ["react", "@typescript-eslint"], settings: { react: { version: "detect" } } }; ``` #### 3. 配置路径别名支持 若项目中使用了路径别名(如 `@/src`)[^3],需添加解析配置: ```bash npm install eslint-import-resolver-alias --save-dev ``` 更新 `.eslintrc.cjs`: ```javascript // 在 settings 下新增 settings: { // ...原有配置 'import/resolver': { alias: { map: [['@', './src']], extensions: ['.ts', '.tsx', '.js', '.jsx'] } } } ``` #### 4. 添加脚本命令 在 `package.json` 中添加: ```json "scripts": { "lint": "eslint src --ext .ts,.tsx --fix" } ``` 运行 `npm run lint` 可自动修复可修复的代码规范问题。 #### 5. VSCode 集成(可选) 安装 ESLint 扩展后,在 `.vscode/settings.json` 添加: ```json { "editor.codeActionsOnSave": { "source.fixAll.eslint": true } } ``` #### 6. 扩展规则配置示例 ```javascript rules: { "react/react-in-jsx-scope": "off", // React 17+ 无需显式导入 "@typescript-eslint/no-unused-vars": "warn", "no-console": ["warn", { allow: ["warn", "error"] }] } ``` ```bash # 若需要 Prettier 集成 npm install prettier eslint-config-prettier --save-dev ``` 更新 extends 配置: ```javascript extends: [ // 原有配置... "prettier" ] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值