2017-08-01 12 views
0

現在、Javascript WebpackプロジェクトをTypescriptで変換するプロセスを開始しようとしています。しかし私の設定は、私がTypescriptに変更したファイルを認識できないようです。Javascript WebpackプロジェクトのTypescriptへの移行(モジュールのエクスポート方法)

プロジェクトのコンパイルが、私は、実行時にこのエラーを取得:

TypeError: Angle.cyclic3dAxis is not a function 

角度が、私はこの形式で、2つの小さな静的関数から成る、活字体で書き直しました(以前のJavascript)ファイルです:

define([],function() 
{ 
var Angle = { }; 
Angle.cyclic3dAxis = function(i) { /* function defined here */ }; 
Angle.anotherFunction = function() { /* defined here */ }; 
return Angle; 
}); 
:私はTSと交換
export class Angle 
{ 
    public static cyclic3dAxis(i: number): number{ /* function defined here */ } 
    public static anotherFunction(): number{/*defined here*/} 
} 
(私は書いていないことが、作品)

オリジナルのJavascriptファイルを、

関数には同じコードが含まれています。 webpack.config.jsonの

関連部品:

/* some vars declared here truncated for brevity */ 
module.exports = function(env) 
{ 
/* more stuff here */ 

resolve : { 
    alias: { 
     Cesium: path.resolve(__dirname, "scripts/Cesium/Cesium.js") 
    }, 
    extensions: [".ts", ".tsx", ".js", ".json"] 
}, 
module: { 
    rules : [ 
     { 
      test: /\.js$/, 
      exclude: /(Cesium|node_modules)/, 
      use: [ 
       { 
        loader: 'babel-loader', 
        options: { 
         presets: ['es2015'], 

        } 
       } 
      ] 
     }, 
     { 
      test: /\.tsx?$/, 
      exclude: /(Cesium|node_modules)/, 
      use: [ 
       { 
        loader: 'awesome-typescript-loader' 
       } 
      ] 
     }, 
/* and more */ 

と私のtsconfig.json:

{ 
    "compilerOptions": { 
     "module": "commonjs", 
     "target": "es6", 
     "sourceMap": true 
    } 
} 

私がtrueに "allowJs" を設定した場合、プロジェクト全体がそう非常に大きいです、 Javascriptヒープがメモリ不足であるというエラーが表示されます。

角度は、このように、プロジェクト内の他のJavaScriptファイルによって参照されています

define([ 
    './Angle', 
    ], 
function(
    Angle 
} 
{ 
/* example function call */ 
functionName = function(i) { 
    return Angle.cyclic3dAxis(i); 
}; 
}); 

私が間違ってやっているもの、または私は追加する必要があるものがある場合は私に知らせてください。あなたの助けに感謝!

+0

あなたはモジュールで、あなたが 'Angle'をインポートする方法を示していますができます使用していること'Angle.cyclic3dAxis'? – Stubb0rn

+0

更新された質問 – anon

答えて

1

変換されたファイルのエクスポートの構造が、元のJSファイルのエクスポートと一致しません。モジュールは次のようになります。

それとも、静的メソッドを持つクラスを持っている必要があれば、それはexport = Angle;でエクスポートする必要があります。

class Angle 
{ 
    public static cyclic3dAxis(i: number): number{ /* function defined here */ } 
    public static anotherFunction(): number{/*defined here*/} 
} 

export = Angle; 
+0

は魅力的に働いた! – anon

関連する問題