확장자가 .js인 파일에서는 JSX가 eslint-config-airbnb에서 허용되지 않습니다.
eslint-config-airbnb는 ESLINT for React를 사전 설정하도록 설치했습니다.
기본 내보내기에는 ECMAScript 6+ 및 React를 포함한 모든 ESLint 규칙이 포함됩니다.여기에는 eslint, eslint-plugin-import, eslint-plugin-react 및 eslint-plugin-jsx-a11y가 필요합니다.
나의.eslintrc
설정을 확장합니다.
{ "extends": "eslint-config-airbnb",
"env": {
"browser": true,
"node": true,
"mocha": true
},
"rules": {
"new-cap": [2, { "capIsNewExceptions": ["List", "Map", "Set"] }],
"react/no-multi-comp": 0,
"import/default": 0,
"import/no-duplicates": 0,
"import/named": 0,
"import/namespace": 0,
"import/no-unresolved": 0,
"import/no-named-as-default": 2,
"comma-dangle": 0, // not sure why airbnb turned this on. gross!
"indent": [2, 2, {"SwitchCase": 1}],
"no-console": 0,
"no-alert": 0,
"linebreak-style": 0
},
"plugins": [
"react", "import"
],
"settings": {
"import/parser": "babel-eslint",
"import/resolve": {
"moduleDirectory": ["node_modules", "src"]
}
},
"globals": {
"__DEVELOPMENT__": true,
"__CLIENT__": true,
"__SERVER__": true,
"__DISABLE_SSR__": true,
"__DEVTOOLS__": true,
"socket": true,
"webpackIsomorphicTools": true
}
}
안타깝게도 리액트 JSX 코드가 포함된 .js 파일을 보풀로 만들면 다음과 같은 오류가 발생합니다.
error JSX not allowed in files with extension '.js' react/jsx-filename-extension
eslint-config-airbnb는 이미 JSX를 지원하도록 설정되어 있지 않습니까?
이 오류를 제거하려면 어떻게 해야 합니까?
파일 확장자를 다음과 같이 변경하십시오..jsx
또는 jsx-disable-disable 규칙을 디세블로 합니다.설정에 다음 항목을 추가하여.js
JSX용 확장 기능.
"rules": {
"react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx"] }],
}
나한텐 일인데.도움이 되길 바랍니다.
disable jsx-disable-disable in
.eslintrc
:"filename": {"filename/filename-filename": [0] }
에
webpack.config.js
:해결: { 확장자: [.displays', '.displaysx'},
안 되면 날 바보라고 불러
"rules": {
"react/jsx-filename-extension": [0],
"import/extensions": "off"
}
파일 확장자를 변경하지 않으려면 jsx를 반환하는 함수를 내보낸 다음 js 파일에서 해당 함수를 가져와 호출할 수 있습니다.
// greeter.jsx
import React from 'react';
export default name => (
<div>
{`Hello, ${name}!`}
</div>
);
그리고 나서.
// index.js
import ReactDOM from 'react-dom';
import greeter from './components/greeter';
const main = document.getElementsByTagName('main')[0];
ReactDOM.render(greeter('World'), main);
다음 React 문서:
각 JSX 요소는 React.createElement(컴포넌트, 소품, ...자녀)를 호출하기 위한 구문설탕일 뿐입니다.
Airbnb 스타일 가이드:
JSX가 아닌 파일에서 앱을 초기화하지 않는 한 React.createElement를 사용하지 마십시오.
다음과 같이 할 수 있습니다.
//index.js
const app = React.createElement(App);
ReactDOM.render(app, document.getElementById('root'));
마틴의 답변을 자세히 설명하자면, 현재로선 사용할 수 없는 것 같습니다.JSX
[ React Native ](네이티브 리액트)로 설정합니다.PR은 생성되었지만 단편화 및 다음과 같은 결과를 초래할 수 있다는 우려로 인해 복구되었습니다.index.ios.jsx
AirBnb가 어떻게 동작하는지, 동작하는지는 모르겠지만 기본적으로는 같은 것을 사용하고 있습니다.rules
마틴처럼 막다.
jsx를 쓰고 싶은 미래의 독자를 위해.js
파일:
- 설치하다
npm i react react-dom
리액션을 쓰고 있지 않다고 생각되더라도요 - 설치하다
npm i -D @babel/preset-react
- babel 구성:
plugins: ['@babel/plugin-transform-react-jsx']
- 셋업해야 합니다.
module.rules
위해서/\.jsx?$/
파일링babel-loader
(이 때문에, 인스톨 할 필요가 있습니다.npm i -D babel-loader
~도)
언급URL : https://stackoverflow.com/questions/43031126/jsx-not-allowed-in-files-with-extension-js-with-eslint-config-airbnb
'programing' 카테고리의 다른 글
워드프레스 is_page()는 항상 false와 함께 반환됩니다. (0) | 2023.03.29 |
---|---|
Rest Client Exception:응답을 추출할 수 없습니다.적절한 Http Message Converter를 찾을 수 없습니다. (0) | 2023.03.29 |
ReactJs에서 componentWillUnmount()를 올바르게 사용하는 방법 (0) | 2023.03.29 |
CSS 모듈 및 리액트를 사용한 여러 클래스 이름 (0) | 2023.03.29 |
.env 파일 변수를 웹 팩 구성에 전달하려면 어떻게 해야 합니까? (0) | 2023.03.29 |