Typescript编译的js文件在未定义的默认属性上抛出异常

时间:2017-10-31 10:56:43

标签: node.js typescript

  

无法读取未定义的属性'json'

     

at Object。 (C:\网络\ learnTypescript \ DIST \ index.js:7:40)

DIST / index.js:7

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

我创建了一个学习TypeScript的简单项目。我安装了我的依赖项和@types对应项,但是当我尝试启动节点node dist/index.js时,我仍然遇到上述错误。

tsconfig.json

{
    "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 */

1 个答案:

答案 0 :(得分:1)

如果您将导入更改为

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';