我是WebStorm的新手,也是Node开发的新手。我正在处理现有项目,并希望我的node_modules能够完成代码。更具体地说,我使用Chai和WebStorm似乎找不到.have
语句的expect.to
成员。
这是我的代码,简化:
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,但这没有任何区别。
答案 0 :(得分:5)
问题是由奇怪的动态方式引起的,这些chai方法是定义的。作为一种解决方法,我建议使用chai.d.ts:
打开“Settings | Languages & Frameworks | JavaScript | Libraries
”
点击“Download...
”按钮,然后选择“TypeScript社区存根”
找到“chai”并点击“Download and Install
”。
有关详情,请参阅http://blog.jetbrains.com/webstorm/2014/07/how-webstorm-works-completion-for-javascript-libraries/,'使用TypeScript社区存根(TypeScript定义文件)'
答案 1 :(得分:3)
WebStorm 2020.1
TypeScript定义也可以直接通过package.json添加:
例如:
答案 2 :(得分:1)
在WebStorm 2019.3中,我执行以下步骤来强制代码完成(包括自动导入)用于仅包含纯ES6模块的自定义,自发布的NPM软件包:
{
"name": "testproject",
"version": "1.0.0",
"dependencies": {
"@yourname/yourpackage": "latest"
}
}
在WebStorm中,选择“文件”>“使缓存无效/重新启动...
要对包内容启用自动导入,请确保使用该包的JavaScript文件具有AT LEAST ONE导出语句。例如,在以下代码中,存在导出功能,因此“代码完成”功能自动导入包函数isNil():
export function init () {
isNil
}
通过比较,以下代码不包含export语句,因此isNil()不会自动导入:
function init () {
isNil
}
对于我来说,前面的所有三个步骤对于代码完成对于WebStorm中我自己的NPM软件包(带有纯ES6模块)而言都是必需的。