编译App.tsx自动生成的App.js出现ESLint错误如何解决?
问题
用TypeScript重构项目时,编译简单组件App.tsx后,自动生成的App.js触发ESLint错误:
[eslint]
src/App.js
Line 1:1: 'use strict' is unnecessary inside of modules
Line 1:1: Strings must use singlequote
相关代码文件:
App.tsx
export default function App() { return <div>it works!</div> }
tsconfig.json
{ "compilerOptions": { "target": "es2016", "module": "commonjs", "esModuleInterop": true, "forceConsistentCasingInFileNames": true, "strict": true, "skipLibCheck": true, "jsx": "react-jsx" }, "include": ["src", "src/@types"] }
package.json
{ "name": "my_gallery", "version": "0.1.0", "private": true, "dependencies": { "@fortawesome/fontawesome-svg-core": "^6.4.2", "@fortawesome/free-brands-svg-icons": "^6.4.2", "@fortawesome/free-regular-svg-icons": "^6.4.2", "@fortawesome/free-solid-svg-icons": "^6.4.2", "@fortawesome/react-fontawesome": "^0.2.0", "@reduxjs/toolkit": "^1.9.7", "@tanstack/react-query": "^4.36.1", "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", "axios": "^1.5.1", "eslint-config-airbnb-typescript": "^17.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-paginate": "^8.2.0", "react-redux": "^8.1.3", "react-router-dom": "^6.16.0", "react-scripts": "5.0.1", "react-select": "^5.7.7", "web-vitals": "^2.1.4" }, "scripts": { "start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject" }, "eslintConfig": { "extends": [ "react-app", "react-app/jest" ] }, "browserslist": { "production": [ ">0.2%", "not dead", "not op_mini all" ], "development": [ "last 1 chrome version", "last 1 firefox version", "last 1 safari version" ] }, "devDependencies": { "@babel/eslint-parser": "^7.22.15", "@types/jest": "^29.5.6", "@types/node": "^20.8.8", "@types/react": "^18.2.31", "@types/react-dom": "^18.2.14", "eslint": "^8.52.0", "eslint-config-airbnb": "^19.0.4", "eslint-plugin-import": "^2.29.0", "eslint-plugin-jsx-a11y": "^6.7.1", "eslint-plugin-react": "^7.33.2", "typescript": "^5.2.2" } }
解决方法
1. 排除编译生成的JS文件
在项目根目录创建.eslintignore文件,添加规则跳过TS编译产物:
src/**/*.js
让ESLint只检查TS/TSX源文件,不处理自动生成的JS文件。
2. 关闭TS自动添加use strict
修改tsconfig.json的compilerOptions,添加noImplicitUseStrict配置:
{ "compilerOptions": { // 原有配置保留 "noImplicitUseStrict": true } }
禁止TypeScript在模块中自动插入'use strict'语句,解决第一个错误。
3. 适配TypeScript的ESLint规则
修改package.json中的eslintConfig,切换为Airbnb TypeScript规则集:
"eslintConfig": { "extends": [ "react-app", "airbnb-typescript", "react-app/jest" ], "parserOptions": { "project": "./tsconfig.json" } }
确保ESLint规则与TypeScript项目兼容,避免对编译产物的无效检查。
4. 清理已生成的JS文件
删除src目录下已存在的App.js文件,后续TS编译会自动处理,且ESLint不再扫描这类文件。
内容的提问来源于stack exchange,提问作者2022.A
相关产品推荐
相关产品推荐

