我正在运行TypeScript 2.0.3,配置为"target": "es2015",
。我从
/// <reference path="../../node_modules/@types/node/index.d.ts" />
import assert = require('assert');
但是在Visual Studio中,标记为Import with 'require' cannot be used when targeting ECMAScript 6 or higher.
的工具提示我尝试了:
/// <reference path="../../node_modules/@types/node/index.d.ts" />
import {assert} from 'assert';
生成Error TS2305 Module '"assert"' has no exported member 'assert'.
我也尝试过:
/// <reference path="../../node_modules/@types/node/index.d.ts" />
import assert from 'assert';
生成Error TS1192 Module '"assert"' has no default export.
答案 0 :(得分:27)
对于节点10及更高版本,最好使用strict assert,named import可以导入named export并为方便起见重命名as assert
:
import { strict as assert } from 'assert';
assert.ok(true);
assert(true);
strict
是来自内置assert
模块的--esmoduleinterop
。命名导出避免了问题中提到的许多问题,即使用单module.exports
CommonJS导出并将其作为默认导入导入的问题。在TypeScript 2.7中,添加了https://docs.djangoproject.com/en/1.10/ref/settings/#file-upload-settings选项以帮助完成此操作。
其余的是旧答案,写于2016年:
import * as assert from 'assert';
assert.ok(true);
assert(true);
如果您从node_modules
所在的同一目录运行打字稿,您甚至不需要添加/// <reference ...
正如@Ryan Cavanaugh在评论中指出的那样,这种语法提示假设它将在ES6模块本机支持的环境中工作(目前还没有这样的环境)。事实并非如此,不可能将ES6模块用作命名空间和函数,所以我认为这种语法仍然可以更好地与现实相匹配:
import assert = require('assert');
但你必须使用打字稿选项
--target es6 --module commonjs
摆脱Import with 'require' cannot be used when targeting ECMAScript 6 or higher
错误。如果您需要的话,也可以单独使用--target es5
选项。
答案 1 :(得分:3)
首先,安装TypeScript
Node.js
个定义
npm i @types/node
然后,您可以导入assert
模块: - )
import * as assert from 'assert';
答案 2 :(得分:0)
我遇到了同样的问题,并切换到power-assert,似乎可以正常使用:
import assert from 'power-assert'