[解決済み] tsc が `TS2307: Cannot find module` for a local file をスローします。
質問
TypeScriptを使った簡単なサンプルプロジェクトがあります。 https://github.com/unindented/ts-webpack-example
実行中
tsc -p .
(を実行します(ただし
tsc
バージョン 1.8.10) は以下を投げます。
app/index.ts(1,21): error TS2307: Cannot find module 'components/counter'.
components/button/index.ts(2,22): error TS2307: Cannot find module 'shared/backbone_base_view'.
components/button/index.ts(3,25): error TS2307: Cannot find module 'shared/backbone_with_default_render'.
components/counter/index.ts(2,22): error TS2307: Cannot find module 'shared/backbone_base_view'.
components/counter/index.ts(3,25): error TS2307: Cannot find module 'shared/backbone_with_default_render'.
components/counter/index.ts(4,27): error TS2307: Cannot find module 'shared/backbone_with_subviews'.
components/counter/index.ts(5,20): error TS2307: Cannot find module 'components/button'.
以下のように、ローカルファイルのインポートすべてに対して文句を言います。
import Counter from 'components/counter';
相対パスに変更すればうまくいくのですが、ファイルを移動するときに生活が苦しくなるので、変更したくありません。
import Counter from '../components/counter';
は
vscode
コードベースは相対パスを使用しませんが、相対パスではすべてうまく動作します。
https://github.com/Microsoft/vscode/blob/0e81224179fbb8f6fda18ca7362d8500a263cfef/src/vs/languages/typescript/common/typescript.ts#L7-L14
私の GitHub リポジトリを確認することができますが、役に立つかもしれないので、以下は
tsconfig.json
ファイルです。
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"noImplicitAny": false,
"removeComments": false,
"preserveConstEnums": true,
"sourceMap": true,
"outDir": "dist"
},
"exclude": [
"dist",
"node_modules"
]
}
面白いことに、プロジェクトを
webpack
を使って
ts-loader
は正常に動作しているので、設定の問題だと思いますが...。
どのように解決するのですか?
vladima は次のように答えました。 この問題は GitHub にあります。 :
<ブロッククオート
コンパイラがモジュールを解決する方法は
moduleResolution オプションで制御されます。
node
または
classic
(さらに
の詳細と相違点は
はこちら
). この設定が省略された場合
として扱われます。
node
である場合、モジュールは
commonjs
であり
classic
- というように、それぞれを指定します。あなたの場合、もし
classic
モジュール
の解決策を
commonjs
モジュールで使用されます。
で明示的に設定する必要があります。
{
"compilerOptions": {
"moduleResolution": "node"
}
}
関連
-
[解決済み] モジュール 'module-name' の宣言ファイルが見つかりませんでした。'/path/to/module-name.js' は暗黙のうちに 'any' 型を持っています。
-
[解決済み] TypeScriptで Object.keys return string[].
-
[解決済み] TypeScriptの予約語 "type "とは何ですか?
-
[解決済み] describe'という名前が見つかりません。テストランナー用の型定義をインストールする必要がありますか?
-
[解決済み] ts ES5/ES3の非同期関数やメソッドには、「Promise」コンストラクタが必要です。
-
[解決済み] Typescriptでインターフェースやクラスを使用する場合 [重複].
-
[解決済み] Angular 2でアプリ起動時にサービスを実行する方法
-
[解決済み] 文字列ユニオンから文字列配列へ
-
[解決済み] Visual Studio Code - インポート引用符の設定を調整する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] TypeScriptで Object.keys return string[].
-
[解決済み] TypeScriptの予約語 "type "とは何ですか?
-
[解決済み] describe'という名前が見つかりません。テストランナー用の型定義をインストールする必要がありますか?
-
[解決済み] ts ES5/ES3の非同期関数やメソッドには、「Promise」コンストラクタが必要です。
-
[解決済み] Typescriptでインターフェースやクラスを使用する場合 [重複].
-
[解決済み] Angular 2でアプリ起動時にサービスを実行する方法
-
[解決済み] 文字列ユニオンから文字列配列へ
-
[解決済み] Visual Studio Code - インポート引用符の設定を調整する