2017-10-31 11 views
0

オブジェクトで未定義活字コンパイルのjsファイルは未定義のデフォルトプロパティに例外をスロー

のプロパティ「JSON」を読み込めません。 (C:\ウェブ\ learnTypescript \のdist \のindex.js:7:40)

DIST/index.js:7

app_1.default.use(body_parser_1.default.json()); 

私は活字を学ぶための簡単なプロジェクトを作成しました。私は自分の依存関係とその@typesの対応がインストールされているが、ノードnode dist/index.jsを起動しようとすると上記のエラーが発生し続ける。

{ 
    "compilerOptions": { 
     "allowSyntheticDefaultImports": true, 
     "moduleResolution": "node", 
     "module": "commonjs", 
     "target": "es6", 
     "outDir": "dist" 
    }, 
    "include": [ "src/**/*" ], 
    "exclude": [ "node_modules" ] 
} 

のsrc/index.ts

import app from './app' 
import bodyParser from 'body-parser' 
/* more imports */ 

app.use(bodyParser.json()); 
/* more code follows */ 

DIST/index.js

"use strict"; 
Object.defineProperty(exports, "__esModule", { value: true }); 
const app_1 = require("./app"); 
const body_parser_1 = require("body-parser"); 
/* more requires */ 
app_1.default.use(body_parser_1.default.json()); 
/* more code follows */ 
+0

これを 'body-parser'から 'import * as bodyParser 'に変更するとどうなりますか? –

+0

それはそうしました。それを回答として追加してください。私はあなたに信用を与えます。なぜ私はそのような方法でインポートする必要がありますかについて私はいくつか質問しますが、私はドキュメンテーションの目的のために答えを保存します。ありがとうございました。 – bflemi3

答えて

1

tsconfig.json

あなたがあるためにあなたのインポートを変更した場合。

import * as bodyParser from 'body-parser'; 

次に修正する必要があります。

* asシンタックスは名前空間インポートと呼ばれ、効果的にファイル内のすべてを含む1つの変数を作成します。

他のファイルからのエクスポートに応じてファイルからインポートできる方法はいくつかあります。

file1.ts

export default class Foo { 
} 

export class Bar { 
} 

const a = 'Hello'; 

export { a as A } 

file2.ts

import A from 'file1'; // A is now the default export from file1 
import * as File from 'file1'; // File is now a constant with Foo, Bar and A 
import { Bar } from 'file1'; // Importing only Bar from file1 

ジェームズも述べたように、あなたはまた、コードを使用することができます。 import { json } from 'body-parser';

+1

「body-parser」から「import {json}」を実行してツリーを振る必要があります – James

関連する問題