如何修复WebStorm警告“未解决的函数或方法”对于“require”(Firefox Add-on SDK)?

251

我正在使用WebStorm 7进行Firefox Add-on SDK开发。

WebStorm显示一个警告:"未解析的函数或方法",针对require()

我想要消除这个警告。

var pageMod = require("sdk/page-mod");

注意:我已经配置了JavaScript库(请参考/lib/sdk globals)。

环境:

  • WebStorm 7.0.2
  • Windows 7 64位
  • Firefox插件SDK 1.15beta1

var pageMod = new require("sdk/page-mod"); 可能会解决这个问题。请注意代码中的“new”。 - nbk
1
我在 WebStorm 8 中也遇到了同样的问题。 - Anthony O.
是的,我也是。这真的很烦人。 - Raul Chiarella
13个回答

383

您的意思是 require() 没有被解析?您需要在项目中添加 require.js 或者在 设置/语言和框架/JavaScript/库 中启用 Node.js Globals 预定义库。

(由 @yurik 编辑的设置路径)

在 WebStorm 2016.x-2017.x 版本中:请确保已启用 设置(首选项) | 语言和框架 | Node.js 和 NPM 中的 Node.js 核心库。

在 IntelliJ 2018.3.2+ 版本中,请前往 设置(首选项) | 语言和框架 | Node.js 和 NPM 并启用 Coding assistance for Node.js


谢谢Lena。我的英语很差,非常抱歉。(>_<;) 我想在WebStorm编辑器上清除警告。 (脚本执行没有问题。)Firefox-Addon-SDK符合CommonJS,但不使用Node.js。 “require”方法定义在<sdkroot>/app-extension/bootstrap.js中。 我将bootstrap.js设置为外部库,但无法清除“未解决”的警告。<code> let require = cuddlefish.Require(loader, module); function loadSandbox(uri) { let sandbox = ... sandbox.require = function (id) { return Object.freeze({ ... }); }; return sandbox; </code> - skatsumata
12
有用的回答!顺便说一下,在我的WebStorm 9中,位置是: 语言和框架-> JavaScript->库; 另一种方法是搜索“库”。 - Paul Ho
1
在Webstorm 9中,你还可以右键点击"require",然后选择"使用Javascript库->Node.js全局变量"。 - Josh Noe
如果库列表中缺少“Node.js Globals”,请启用NodeJS插件。 - i0x539
4
FYI:我不得不关闭我的节点助手,清除无效缓存并重新启动WebStorm,然后再打开它才能使其正常工作。WebStorm 2018.3.5 - Reactgular
显示剩余3条评论

236

Webstorm 11和2016.2.3

在Webstorm设置中启用Node.js核心库

输入图片描述

输入图片描述

输入图片描述


我只是想补充一下,我也遇到了同样的问题,尽管我的核心库已经启用,但进入设置屏幕似乎解决了这个问题。 - Rob Rose
1
最新版本的Node和WebStorm在使用TypeScript时对我来说不起作用。 我们Angular2的人仍在寻找解决方法。 在组件定义中使用:styles: [require('./app.component.css')] - a_dreb
我在编译器中仍然遇到错误,错误代码为TS2304:找不到名称“require”。 - SuperUberDuper
@SuperUberDuper 你应该用 import {*} from 'node module' 替换 'require',并在 tsconfig.json 中指定 "target": "CommonJS" - Bhoomtawath Plinsut
只要在Webstorm首选项中启用它(而不是项目设置),它就可以正常工作。 - U_D
在WebStorm 2022.1.1中奇怪的问题,无法正常工作。 - Kasra

60

在花费一小时尝试所有在线找到的解决方案后,最终这个方法起作用了!

文件 -> 清除缓存/重启...


3
这对我在WebStrom 2017.2.4上有效,解决了一个错误的问题,其中Array.push被错误地指示为不存在的方法。 - POSIX-compliant
2
在更新了PhpStorm 2017.2.4版本号为PS-172.4155.41之后,问题得到了解决。问题出在IDE没有遵循ES6规范。 - Maximilian Fixl
1
在WebStorm 2021.2.3中对我有效。 - elgranchuchu
1
无法强调这个答案是多么正确。 - Ievgen Baziak

47
在PHPStorm中,这有点容易:你只需要在设置中搜索NPM或者:
File > Settings > Language & Frameworks > Node.js and NPM

然后点击启用按钮(显然在新版本中,它被称为“Node 的编码辅助”)。


18

使用Intellj 2016,Angular2和Typescript进行开发...唯一有效的方法是获取NodeJS的Typescript定义

从GitHub上的DefinitelyTyped获取node.d.ts

或者运行:

npm install @types/node --save-dev

然后在tsconfig.json中包含它

"types": [
     "node"
  ]

4
谢谢!我感觉自己已经寻找很久了!只是安装@types/node就让WebStorm平静了下来;编译器稍后再看。 - Kesarion
谢谢,这对我很有帮助。以前我使用这里接受的答案可以工作,但是随着我添加新库,它开始出现冲突。这次修复了我的问题。 - kioleanu

14
在WebStorm 2018.3中,界面有些不同。输入图像描述

7

在WebStorm 2016.3版本中

  1. Press ALT+F12 (open terminal)

  2. Run this command:

    npm install require.js
    

5

对于WebStorm 2019.3版本,请在 文件(File) > 首选项(Preferences)或者 设置(Settings) > 语言与框架(Languages & Frameworks) > Node.js and NPM 中启用编码辅助(Coding assistance)以支持NodeJs。

请注意,您想使用的附加软件包已被包含在内。


这么简单,说不定就能行。 - Devin B.

4
禁用JetBrains检查并获取ESLint插件。
对我来说,File | Invalidate caches and restart所做的唯一一件事情就是重置它足够长的时间以欺骗我认为错误已经消失了。一旦再次运行检查,错误就像不断送礼物一样回来了。
通过禁用所有JetBrains检查(Editor > Inspections >取消选中JavaScript),然后安装ESLint插件,我省去了所有这些挫败感。
可以通过前往JetBrains检查(Editor > Inspections > JavaScript)并搜索“未解决的JavaScript”,关闭“未解决的JavaScript函数”和“未解决的JavaScript变量”来关闭引起“未解决的函数方法”的检查。
自从我杀死了它们以来,我就毫无问题地编辑我的代码了。

3

好的,我已经看到很多已经给出的答案了,我想再添加一些已解决的未解决的函数/方法/变量警告。

这将解决"require的未解决函数或方法和其他一些警告"。

Go -> Preferences-> Languages & Frameworks -> Node.js and NPM, then checkmark the "Coding assistance for Node.js"

如果你仍然看到这种警告,未解决的变量或类似的内容,你可以通过以下步骤手动禁用这些警告。

Go -> Preferences-> Editor-> Inspections-> JavaScript-> General.  

您将找到一个列表,只需取消选择您想要禁用的警告,然后应用即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接