teratail header banner
teratail header banner
質問するログイン新規登録
npm

npmは、Node Packaged Modulesの略。Node.jsのライブラリ・パッケージを管理できるツールです。様々なモジュールを簡単にインストールでき、自分でモジュールを作成し公開する際にも使用できます。

React Native

React Nativeは、ネイティブモバイルアプリ(iOS/Android)を作成できるJavaScriptフレームワークです。Reactと同じ設計のため、宣言的なコンポーネントでリッチなUIを開発することが可能です。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

Q&A

解決済

1回答

2422閲覧

TypeScript エラー:You may need an appropriate loader to handle this file type

hiroki88

総合スコア66

npm

npmは、Node Packaged Modulesの略。Node.jsのライブラリ・パッケージを管理できるツールです。様々なモジュールを簡単にインストールでき、自分でモジュールを作成し公開する際にも使用できます。

React Native

React Nativeは、ネイティブモバイルアプリ(iOS/Android)を作成できるJavaScriptフレームワークです。Reactと同じ設計のため、宣言的なコンポーネントでリッチなUIを開発することが可能です。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

0グッド

0クリップ

投稿2022/09/14 08:11

編集2022/09/14 08:13

0

0

前提

チャットアプリを開発しています。
使用しているものは以下になります。
・Node.js v14.17.0
・React.js v17.0.0
・Webpack v4.44.2
・Webpack-cli v4.7.2
・ts-loader ^9.3.1

実現したいこと

npm run buildでビルドができるようにしたい。
buildを行うと以下のエラーが表示されます。

発生している問題・エラーメッセージ

ERROR in ./src/App.js 14:6 Module parse failed: Unexpected token (14:6) You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders | render(){ | return( > <AppProvider> | <Router> | <div>

該当のソースコード

webpack.config.js

1module.exports = { 2 mode: "development", 3 entry: "./src/App.js", 4 output: { 5 path: `${__dirname}/build`, 6 filename: "main.js" 7 }, 8 module: { 9 rules: [ 10 { 11 // 拡張子 .ts もしくは .tsx の場合 12 test: /\.tsx?$/, 13 use: "ts-loader", 14 } 15 ] 16 }, 17 resolve: { 18 extensions: [".ts", ".tsx", ".js", ".json"] 19 }, 20 };

試したこと

このエラーを調べた時にTypeScriptを処理するloaderが無いことが原因で「ts-loader」を設定することで解決できると出てきました。
ただ元々「ts-loader」はインストール済みで設定してあったので原因が分かりません。
エラーで矢印がある< AppProvider >はtsxファイルになります。
既存の設定が抜けている、追加の設定が必要などわかる方がいらっしゃればご教示いただけると大変助かります。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

JavaScriptにJSXを書いているので、babel-loaderを使う、あるいは然るべき設定を行ってJavaScriptもts-loaderへ流すなど、適切な方法でJSXの処理を行う必要があります。

ただ元々「ts-loader」はインストール済みで設定してあったので原因が分かりません。

現状の設定では、.jsファイルをts-loaderへ通さない状態ですので無関係です。

投稿2022/09/14 08:18

maisumakun

総合スコア146702

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2022/09/14 08:19

もちろん、App.jsをApp.tsxに書き換える(他のJSX入りファイルも全てtsxに書き換える)という選択肢もあります。
hiroki88

2022/09/19 05:51

ご回答ありがとうございます! ts-loaderにJSも流すようにするやり方を参考に行ったところエラーが消えました! 大変助かりました、エラーの原因も理解できありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問