簡體   English   中英

在 WebStorm 中為 node_modules 啟用代碼完成

[英]Enable code completion for node_modules in WebStorm

我是 WebStorm 的新手,也是 Node 開發的新手。 我正在處理一個現有項目,並希望為我的 node_modules 完成代碼。 更具體地講,我用柴和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 啟用了編碼幫助,但這並沒有什么區別。

問題是由這些 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 定義文件)”

網絡風暴 2020.1

也可以通過 package.json 直接添加 TypeScript 定義:

  1. 打開項目的package.json
  2. 將光標定位在包上(在依賴項部分內)
  3. 按 alt+enter(或單擊燈泡)
  4. 選擇 Install '@types/ name '(其中name是依賴項)

例如:

WebStorm 意圖彈出窗口

在 WebStorm 2019.3 中,我遵循以下步驟來強制代碼完成(包括自動導入)適用於僅包含純 ES6 模塊的自定義、自行發布的 NPM 包:

  1. 確保項目本身在項目的根目錄下有一個 package.json 文件,並且 package.json 在“dependency”對象中包含所需的包。 例如:
{
  "name": "testproject",
  "version": "1.0.0",
  "dependencies": {
    "@yourname/yourpackage": "latest"
  }
}
  1. 在 WebStorm 中,選擇 File > Invalidate Caches / Restart...

  2. 要為包內容啟用自動導入,請確保使用包的 JavaScript 文件具有至少一個導出語句。 例如,在以下代碼中,存在導出,因此代碼完成自動導入包函數 isNil():

export function init () {
  isNil
}

相比之下,以下代碼不包含導出語句,因此不會自動導入 isNil():

function init () {
  isNil
}

對我來說,前面三個步驟都是代碼完成所必需的,以便在 WebStorm 中為我自己的 NPM 包(帶有純 ES6 模塊)工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM