问题描述
在Visual Studio Code中,您可以通过将焦点移至导入的术语,然后使用“快速修复”功能(对我来说CTRL + .
)来自动导入大多数内容。然后,您可以选择让VS Code为您添加该术语的导入到您文件的顶部...除非该术语是assert
。
(注意:,我相信您需要在"checkJs": true
中加入jsconfig.js
才能正常工作...否则将使用打字稿。)
奇怪的是,“断言”模块 是作为Node本身的一部分提供的!似乎VS Code并不知道可用,而且我不确定如何使它知道。
在进行自动导入时,是否有任何方法(例如VS Code设置,jsconfig.json
选项等)使之识别assert
模块的存在? / p>
解决方法
我认为这是一个错误,应该适用于所有内置模块。
何时有效以及何时无效的详细说明。
它可以建议以一种奇怪的方式导入断言。
我有一个带有jsconfig.json
文件的简单JavaScript项目,
{
"compilerOptions": {
"module": "commonjs","target": "es6","checkJs": true
},"exclude": ["node_modules"]
}
您已经提到"checkJs": true
对于获得必需的CodeAction(QuickFix)选项至关重要。
或者您可以在.js
文件中作为第一行添加
//@ts-check
我的app.js
文件非常简单
assert(5 > 7,"Always False");
我得到了红色的花体,但是“快速修复”列表中没有导入建议。
如果我为内置模块添加任何require
语句,则会在快速修复列表(import 'assert' from module "console"
和import 'assert' from module "assert"
)中获得导入建议
var zlib = require('zlib');
assert(5 > 7,"Always False");
如果我选择一种进口商品
var zlib = require('zlib');
const assert = require('assert');
assert(5 > 7,"Always False");
在Node.js中运行脚本会按预期引发断言。
Debugger attached.
Waiting for the debugger to disconnect...
assert.js:374
throw err;
^
AssertionError [ERR_ASSERTION]: Always False
[snip....]
generatedMessage: false,code: 'ERR_ASSERTION',actual: false,expected: true,operator: '=='
}
Process exited with code 1
如果我有一个app.js
与
var gzip = zlib.createGzip();
我无法快速导入zlib。
自己添加导入使脚本运行。
var zlib = require('zlib');
var gzip = zlib.createGzip();
我想知道哪些模块可以生成快速修复建议。