2016-10-05 6 views
6

私は"target": "es2015",で設定されたTypeScript 2.0.3を実行しています。私はNode.jsからアサートをインポートするためのTypeScript 2.0/ES2015の方法は何ですか?

/// <reference path="../../node_modules/@types/node/index.d.ts" /> 
import assert = require('assert'); 

で始めたが、私はその後、試したImport with 'require' cannot be used when targeting ECMAScript 6 or higher.を言っツールチップでフラグが付けられますのVisual Studioで:

Error TS2305 Module '"assert"' has no exported member 'assert'.

を生成

/// <reference path="../../node_modules/@types/node/index.d.ts" /> 
import {assert} from 'assert'; 

私も試してみた:

/// <reference path="../../node_modules/@types/node/index.d.ts" /> 
import assert from 'assert'; 

Error TS1192 Module '"assert"' has no default export.

+1

あなたはすでにこれを見たことがありますか?お探しのものに似ているようです:https://github.com/Microsoft/TypeScript/issues/9725 – Igor

+0

ありがとうございます。私は私の世界から角を塞いでいた(私は老犬です)。私はそのスレッドからtsconfig.jsonのトリックを試みます。 –

+0

それは私が 'assert'のために受け取ったエラーメッセージを変更するものではありません。このスレッドの 'tsconfig.json'の変更は、私の例では' /// reference ... '行の代わりに使用されていると思います。 –

答えて

13

これは私の作品:

import * as assert from 'assert'; 

assert.ok(true); 

assert(true); 

あなたはnode_modulesがある同じディレクトリからtypescriptですが実行した場合、あなたも@Ryan Cavanaughのとおり/// <reference ...

UPDATE

を追加する必要はありませんこのシンタックスでは、ES6モジュールがネイティブにサポートされている環境(まだそのような環境は存在しない)で動作することを前提としています。それは、名前空間と機能の両方として使用することができますES6モジュールを持ってすることはできません、事実ではないので、私はこの構文はまだ良い現実と一致すると思う:

import assert = require('assert'); 

しかし、あなたはtypescriptですオプションを使用する必要があり

--target es6 --module commonjs 

Import with 'require' cannot be used when targeting ECMAScript 6 or higherエラーを取り除く。それが必要な場合は、ただ--target es5オプションを単独で使用することもできます。

+0

ありがとうございます。そうです。 –

+0

実際のES6環境ではこれが実際に動作しないことに注意してください。 –

+1

はい、回答を更新しました – artem

0

私は同じ問題を抱えていた、として正常に動作するようですどのpower-assertに切り替え:

import assert from 'power-assert' 
関連する問題