파일 이름이 jsx인 경우 웹 팩에서 모듈을 찾을 수 없습니다.
webpack.config.js 라고 쓰면
module.exports = {
entry: './index.jsx',
output: {
filename: 'bundle.js'
},
module: {
loaders: [{
test: /\.jsx?$/,
exclude: /node_modules/,
loader: 'babel',
query: {
presets: ['es2015', 'react']
}
}]
}
};
그리고...index.jsx
Import하다react
모듈App
import React from 'react';
import { render } from 'react-dom';
import App from './containers/App';
let rootElement = document.getElementById('box')
render(
<App />,
rootElement
)
에서 모듈 앱 이름을 지정했는지 확인합니다.App.jsx
웹 팩은 다음과 같이 표시됩니다.index.jsx
모듈을 찾을 수 없습니다.App
단, 에서 모듈앱이라는 이름을 붙이면App.js
이 모듈은 정상적으로 동작합니다.
그래서 헷갈려요.인마이webpack.config.js
, 나는 썼다.test: /\.jsx?$/
파일을 확인하는데 왜 이름이 붙여졌습니까?*.jsx
찾을 수 없습니까?
웹 팩이 해결할 방법을 알 수 없습니다..jsx
파일이 암묵적으로 표시됩니다.앱에서 파일 확장자를 지정할 수 있습니다.import App from './containers/App.jsx';
현재 로더 테스트에서는 jsx 확장자를 가진 파일을 명시적으로 Import할 때 babel loader를 사용하도록 되어 있습니다.
또는 다음을 포함할 수 있습니다..jsx
웹 팩이 명시적으로 선언하지 않고 해결해야 하는 확장자:
module.exports = {
entry: './index.jsx',
output: {
filename: 'bundle.js'
},
module: {
loaders: [{
test: /\.jsx?$/,
exclude: /node_modules/,
loader: 'babel',
query: {
presets: ['es2015', 'react']
}
}]
},
resolve: {
extensions: ['', '.js', '.jsx'],
}
};
Webpack 2 의 경우는, 빈 내선 번호를 떼어 둡니다.
resolve: {
extensions: ['.js', '.jsx']
}
가독성 및 복사 붙여넣기 부호화를 위해.여기 이 스레드에 있는 Mr Rogers의 webpack 4의 답변이 있습니다.
module: {
rules: [
{
test: /\.(js|jsx)$/,
exclude: /node_modules/,
resolve: {
extensions: [".js", ".jsx"]
},
use: {
loader: "babel-loader"
}
},
]
}
위의 답변에 덧붙여,
resolve 속성은 응용 프로그램에서 사용 중인 모든 파일 유형을 추가해야 합니다.
.jsx 또는 .es6 파일을 사용하는 경우를 가정해 보겠습니다.이것들을 여기에 포함하면, Web 팩에 의해서 해결됩니다.
resolve: {
extensions: ["", ".js", ".jsx", ".es6"]
}
resolve 속성에 확장자를 추가하면 Import 문에서 해당 확장자를 제거할 수 있습니다.
import Hello from './hello'; // Extensions removed
import World from './world';
커피 스크립트를 검출하는 경우는, 다음과 같이 테스트 속성을 설정할 필요가 있습니다.
// webpack.config.js
module.exports = {
entry: './main.js',
output: {
filename: 'bundle.js'
},
module: {
loaders: [
{ test: /\.coffee$/, loader: 'coffee-loader' },
{
test: /\.js$/,
loader: 'babel-loader',
query: {
presets: ['es2015', 'react']
}
}
]
},
resolve: {
// you can now require('file') instead of require('file.coffee')
extensions: ['', '.js', '.json', '.coffee']
}
};
@max로부터의 답변 코멘트에서도 언급했듯이 Webpack 4의 경우 모듈 아래에 나열된 규칙 중 하나에 다음과 같이 입력해야 합니다.
{
module: {
rules: [
{
test: /\.jsx?$/,
resolve: {
extensions: [".js", ".jsx"]
},
include: ...
}
]
}
}
해당 bundle.js가 오류 없이 생성되고 있는지 확인합니다(태스크 실행자 로그 확인).
컴포넌트 렌더 함수의 html 구문 오류로 인해 "cannot find module if jsx"라는 이름의 파일을 찾을 수 없습니다.
저도 같은 문제에 직면해 있었기 때문에 해결 속성을 사용하여 해결할 수 있었습니다.
const path = require('path');
module.exports = {
entry: './src/app.jsx',
output: {
path: path.join(__dirname,'public'),
filename: 'bundle.js'
},
module : {
rules: [{
loader: 'babel-loader',
test: /\.jsx$/,
exclude: /node_modules/
}]
},
resolve: {
extensions: ['.js', '.jsx']
}
}
보시는 바와 같이 .jsx를 사용하여 다음 오류를 해결했습니다.
./src/app.jsx 모듈을 찾을 수 없습니다. 오류:해결할 수 없다
참고 자료: https://webpack.js.org/configuration/resolve/ #syslog-extensions
나는 다음과 같은 내 타이프스크립트 프로젝트를 만드는 동안 수입과 관련하여 비슷한 문제에 직면했다.webpack
★★★★★★★★★★★★★★★★★★:
"webpack": "^5.28.0",
"webpack-cli": "^4.5.0"
는...App.tsx
파일이 올바른 경로에 있고 명명된 내보내기와 함께 내보냅니다.렇지 but but , but 。yarn build
요.Module not found: Error: Can't resolve './App' in '/app/sample_proj/src'
는 다음과 같습니다.import {App} from './App';
는 이 문제를 해결하기 위해 '이러다', '이러다'를 했습니다.tsx
아래webpack
존 from from from from from from from from from from from의 엔트리 예시webpack.config.js
module.exports = {
......
resolve: {
extensions: [ '.ts', '.js', '.tsx', '.jsx'],
}
}
또, 이 에러의 경우, Import가 디폴트인지 이름부여도 상관없습니다. webpack
처리해야 할 파일 확장자의 종류만 알면 됩니다.
서버를 재부팅하면 이 문제가 해결되었습니다.간단히 실행하다
npm start
언급URL : https://stackoverflow.com/questions/34678314/webpack-cant-find-module-if-file-named-jsx
'programing' 카테고리의 다른 글
Jackson을 사용하여 JSON에서 단일 필드 가져오기 (0) | 2023.03.16 |
---|---|
어레이를 JSON 문자열로 빠르게 변환 (0) | 2023.03.16 |
각도 조절 e2e 테스트 - 계속하기 전에 주요 이벤트가 완료될 때까지 기다립니다. (0) | 2023.03.16 |
스프링 부트 시 안정 컨트롤러에서html 페이지를 반환하는 방법 (0) | 2023.03.16 |
WordPress 4.7.2로 업데이트할 수 없음 - 오류: 일관성 없는 파일 권한 (0) | 2023.03.16 |