2017-05-14 27 views
0

新しいAngular2プロジェクトでファイルをインポートしようとしています。ファイル拡張子なしでTSファイルをインポートすることができる一方Typescriptは拡張子のないファイルをインポートできません

import { AppModule }    from './module/app.module'; 

「app.module.ts」とされない: エントリファイル「main.ts」が使用している他のtypescriptファイルをインポートすることが可能です。

import { AppComponent }    from '../component/app.component'; 

私はすべてが期待どおりに動作するファイル名に「.TS」を追加した場合...

は私のミスは何ですか?私はノード6.9.4、NPM 4.2.0、2.3.2 typescriptです、角度4.1.0および2.5.1のWebPACKは

私のTSconfigをインストールして、角度ガイド(https://angular.io/docs/ts/latest/guide/webpack.html

あたりのように私は私がすべてをやっていると仮定します自動的にファイルのトンを検出します.json

{ 
    "compilerOptions": { 
     "target": "es6", 
     "module": "commonjs", 
     "moduleResolution": "node", 
     "sourceMap": true, 
     "emitDecoratorMetadata": true, 
     "experimentalDecorators": true, 
     "noImplicitAny": true, 
     "suppressImplicitAnyIndexErrors": true 
    } 
} 

マイwebpack.config.js

(デフォルト古典的な解像度設定での書き込み時)
var webpack = require('webpack'); 
var HtmlWebpackPlugin = require('html-webpack-plugin'); 
var ExtractTextPlugin = require('extract-text-webpack-plugin'); 
var helpers = require('./helpers'); 

module.exports = { 
    entry: { 
     'polyfills': './src/polyfills.ts', 
     'vendor': './src/vendor.ts', 
     'app': './src/main.ts' 
    }, 
    resolve: { 
     extensions: ['.ts', '.tsx', '.js', '.jsx'] 
    }, 
    module: { 
     rules: [ 
      { 
       test: /\.ts$/, 
       loader: 'awesome-typescript-loader' 
      }, 
      { 
       test: /\.(html|htm|php)$/, 
       loader: 'html-loader' 
      }, 
      { 
       test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico)$/, 
       loader: 'file-loader?name=assets/[name].[hash].[ext]' 
      }, 
      { 
       test: /\.css$/, 
       exclude: helpers.root('src', 'app'), 
       loader: ExtractTextPlugin.extract({ 
        fallbackLoader: 'style-loader', 
        loader: 'css-loader?sourceMap' 
       }) 
      }, 
      { 
       test: /\.css$/, 
       include: helpers.root('src', 'app'), 
       loader: 'raw-loader' 
      } 
     ] 
    }, 
    plugins: [ 
     // Workaround for angular/angular#11580 
     new webpack.ContextReplacementPlugin(
      // The (\\|\/) piece accounts for path separators in *nix and Windows 
      /angular(\\|\/)core(\\|\/)(esm(\\|\/)src|src)(\\|\/)linker/, 
      helpers.root('./src'), // location of your src 
      {} // a map of your routes 
     ), 

     new webpack.optimize.CommonsChunkPlugin({ 
      name: ['app', 'vendor', 'polyfills'] 
     }), 

     new HtmlWebpackPlugin({ 
      template: '../../template/base/app.php' 
     }) 

     // new webpack.optimize.UglifyJsPlugin() 
    ], 
    output: { 
     filename: '[name].js' 
    } 
}; 
+0

Typescriptファイルの拡張子は.tsです。最初に.ts拡張子を持つファイルを作成したくないのはなぜですか? –

+0

私のファイルの拡張子が.tsです。拡張子をインポート状態にしないと、ロードされていないという問題があります。 – donnikitos

+0

あなたはtsconfigを共有できますか? –

答えて

2

活字体帽子の終わりは.tsまたは.tsxであり、そのような場合は拡張を必要としません。他のすべてのファイルはtypescriptですモジュールの解像度の規則に従って拡張が必要になります。https://www.typescriptlang.org/docs/handbook/module-resolution.html

Tlの; DR: あなたは活字体がA.tsまたはA.tsxを探します拡張子なしAが含まれている場合。

+1

それは問題です、私は同じと仮定していましたが、残念ながらそうではありません。正しい拡張子があっても、.tsファイルがロードされていません。 tsconfigでは、古典とノードの両方を試しましたが、動作しません。 – donnikitos

+0

これは従来の解像度とは関係ありません。 TypeScriptに明示的な '.ts'拡張子を持つTypeScriptファイルをインポートするだけでは無効です。 –

+0

@donnikitosご迷惑をおかけして申し訳ございません。それは私が説明することができない実際に奇妙な行動です(あなたはなぜ私を答えの笑とマークしましたか)。 –

関連する問題