在 WebStorm 中为 node_modules 启用代码完成
Enable code completion for node_modules in WebStorm
我是 WebStorm 的新手,也是 Node 开发的新手。我正在处理现有项目,并希望为我的 node_modules 完成代码。更具体地说,我正在使用 Chai,而 WebStorm 似乎没有找到我的 expect.to
语句的 .have
成员。
这是我的代码,经过简化:
var expect = require('chai').expect;
import {Customer} from '../../app/model/Customer.js';
describe('...', function() {
it('...', function() {
var customer = new Customer();
expect(customer).to.have.property('name');
});
});
我在 have
调用下看到了波浪线,WebStorm 告诉我 Unresolved variable have
。
如果我在 to
上按 F12,WebStorm 会将我带到另一个节点模块 shelljs,但我还没有导入那个。
这是因为 WebStorm 无法解析 javascript 中的所有内容吗?
我已经为 NodeJS 启用了编码辅助 per the docs,但这没有任何区别。
问题是由这些 chai 方法的奇怪动态定义方式引起的。作为解决方法,我建议使用 chai.d.ts:
打开“Settings | Languages & Frameworks | JavaScript | Libraries
”
点击“Download...
”按钮然后select"TypeScript community stubs"
找到"chai"并点击“Download and Install
”。
有关详细信息,请参阅 http://blog.jetbrains.com/webstorm/2014/07/how-webstorm-works-completion-for-javascript-libraries/、'Using TypeScript community stubs (TypeScript definition files)'
WebStorm 2020.1
TypeScript 定义也可以通过 package.json:
直接添加
- 打开项目的package.json
- 将光标放在包上(在依赖项部分)
- 按 alt+enter(或单击灯泡)
- 选择安装 '@types/name'(其中 name 是依赖项)
例如:
在 WebStorm 2019.3 中,我按照以下步骤强制代码完成(包括自动导入)为仅包含纯 ES6 模块的自定义、自行发布的 NPM 包工作:
- 确保项目本身在项目的根目录下有一个 package.json 文件,并且 package.json 在“依赖项”对象中包含 desire 包。例如:
{
"name": "testproject",
"version": "1.0.0",
"dependencies": {
"@yourname/yourpackage": "latest"
}
}
在 WebStorm 中,select 文件 > 使缓存无效/重新启动...
要启用包内容的自动导入,请确保使用包的 JavaScript 文件至少有一个导出语句。例如,在下面的代码中,存在导出,因此代码完成自动导入包函数 isNil():
export function init () {
isNil
}
相比之下,以下代码不包含导出语句,因此不会自动导入 isNil():
function init () {
isNil
}
对我来说,前面的所有三个步骤都是代码完成所必需的,以便在 WebStorm 中为我自己的 NPM 包(带有纯 ES6 模块)工作。
我是 WebStorm 的新手,也是 Node 开发的新手。我正在处理现有项目,并希望为我的 node_modules 完成代码。更具体地说,我正在使用 Chai,而 WebStorm 似乎没有找到我的 expect.to
语句的 .have
成员。
这是我的代码,经过简化:
var expect = require('chai').expect;
import {Customer} from '../../app/model/Customer.js';
describe('...', function() {
it('...', function() {
var customer = new Customer();
expect(customer).to.have.property('name');
});
});
我在 have
调用下看到了波浪线,WebStorm 告诉我 Unresolved variable have
。
如果我在 to
上按 F12,WebStorm 会将我带到另一个节点模块 shelljs,但我还没有导入那个。
这是因为 WebStorm 无法解析 javascript 中的所有内容吗?
我已经为 NodeJS 启用了编码辅助 per the docs,但这没有任何区别。
问题是由这些 chai 方法的奇怪动态定义方式引起的。作为解决方法,我建议使用 chai.d.ts:
打开“
Settings | Languages & Frameworks | JavaScript | Libraries
”点击“
Download...
”按钮然后select"TypeScript community stubs"找到"chai"并点击“
Download and Install
”。
有关详细信息,请参阅 http://blog.jetbrains.com/webstorm/2014/07/how-webstorm-works-completion-for-javascript-libraries/、'Using TypeScript community stubs (TypeScript definition files)'
WebStorm 2020.1
TypeScript 定义也可以通过 package.json:
直接添加- 打开项目的package.json
- 将光标放在包上(在依赖项部分)
- 按 alt+enter(或单击灯泡)
- 选择安装 '@types/name'(其中 name 是依赖项)
例如:
在 WebStorm 2019.3 中,我按照以下步骤强制代码完成(包括自动导入)为仅包含纯 ES6 模块的自定义、自行发布的 NPM 包工作:
- 确保项目本身在项目的根目录下有一个 package.json 文件,并且 package.json 在“依赖项”对象中包含 desire 包。例如:
{
"name": "testproject",
"version": "1.0.0",
"dependencies": {
"@yourname/yourpackage": "latest"
}
}
在 WebStorm 中,select 文件 > 使缓存无效/重新启动...
要启用包内容的自动导入,请确保使用包的 JavaScript 文件至少有一个导出语句。例如,在下面的代码中,存在导出,因此代码完成自动导入包函数 isNil():
export function init () {
isNil
}
相比之下,以下代码不包含导出语句,因此不会自动导入 isNil():
function init () {
isNil
}
对我来说,前面的所有三个步骤都是代码完成所必需的,以便在 WebStorm 中为我自己的 NPM 包(带有纯 ES6 模块)工作。