WebStorm无法识别'require'关键字

31

我正在使用WebStorm作为IDE。

这是我的文件夹结构和已安装的express.js:

enter image description here

但是我的示例代码不知道require关键字:

var express = require('express');
var app = express();

app.listen(1337, function(){
    console.log("ready");
});

更新

根据Darin的回答,这是我的package.json文件,它现在位于Website文件夹的根目录中:

enter image description here

{
  "name": "MyTestSite.com",
  "version": "0.0.1",
  "description": "A Website",
  "main": "test.js",
  "directories": {
    "test": "tests"
  },
  "dependencies": {
    "express": "^4.11.2"
  },
  "devDependencies": {},
  "scripts": {
    "test": "n/a"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/n/a"
  },
  "keywords": [
    "express"
  ],
  "author": "My Name",
  "license": "n/a",
  "bugs": {
    "url": "https://github.com/n/a/issues"
  },
  "homepage": "https://github.com/n/a"
}

这是通过 npm init 创建的。 我认为我不需要其中所有东西,所以现在只剩下:

{
  "name": "MyTestSite.com",
  "version": "0.0.1",
  "description": "A Website",
  "main": "test.js",
  "directories": {
    "test": "tests"
  },
  "dependencies": {
    "express": "^4.11.2"
  }
}

我这里肯定有些格式问题...WebStorm还是不认识require关键字。
require是npm的关键字,对吧?

你是说这里有代码着色?这里指什么? - PositiveGuy
你的问题是什么?为什么这个未指定的IDE不知道require关键字? - Denys Séguret
是的,那是我的问题,不是IDE的问题。我可能没有正确地构建我的节点应用程序或者其他什么原因导致它无法被识别。 - PositiveGuy
我认为很明显这是智能感知(也就是应用程序)……它要么识别,要么不识别,应用程序根本无法工作。 - PositiveGuy
1
当然这和IDE有关。你认为智能感知是用来干什么的? - eis
显示剩余2条评论
5个回答

48
在Webstorm中,您的设置(ctrl-alt-s)有三个地方可以更新Node.js项目的设置。 设置:Javascript库 首先,在Javascript | Libraries中,您可以指定要加载Node库。您的库集可能与此不同,但应该非常接近...或者,如果需要,您可以添加库以使您的版本(node、io等)显示出来。

enter image description here

JSHint

其次,如果您启用了JSHint,则还应启用Node.js环境,以使JSHint的行为合适。

enter image description here

Nodejs和NPM设置

你可以(也应该)设置node可执行文件的路径。Webstorm还会检测你全局安装的模块,并显示它们是否是最新版本。

enter image description here

官方文档

最后,这个参考链接包含了更多关于WebStorm和Node的信息:JetBrains Webstorm -- Nodejs 文档


谢谢。我现在已经做完了。但是我仍然遇到了问题。直到我将test.js文件移动到node_modules文件夹中,JSHint和JSLint才开始识别require关键字。我不知道其他人是否也这样做,感觉将app.js文件放在node_modules文件夹中有点奇怪?这样做正确吗? - PositiveGuy
1
不,所有的关键字(包括 require)都应该在你的项目根目录中被识别。仍然有些问题或配置错误。 - Matthew Bakaitis
很遗憾,这个答案现在已经过时了。 - UpTheCreek
我想知道为什么jshint默认情况下没有启用“Node.js”! - Mohammad Kermani

18

在“首选项 > 语言和框架 > Node.js 和 NPM”下,确保"启用Node.js核心库"被启用。

输入图像描述


1
在2017年6月,我在Windows 7上使用最新版本的WebStorm成功运行了该程序。 - The Coder
关于一个 TypeScript React 项目怎么样? - SuperUberDuper

5
在“设置 > 语言和框架 > Node.js 和 NPM”下,确保勾选“索引内部节点模块”。完成索引后,它将识别“require”关键字。

1

更新

在新版Webstorm中,只需将鼠标移到错误上方,点击更多操作...(或按下ALT+ENTER)并选择启用Node.js编程辅助即可解决此问题。

enter image description here


要解决新版Webstorm的这些问题,您需要启用Node.js编程辅助
为此,请转到设置>语言和框架>Node.js和NPM,然后单击Node.js编程辅助选项,最后单击确定以保存:

enter image description here

这将解决所有 Node.js 未解析的变量和函数。

0
请确保您的网站根目录下有一个package.json文件。

但是这个人没有一个,为什么他的可以工作?请从16:36开始观看:https://www.youtube.com/watch?v=QseHOX-5nJQ - PositiveGuy
这个人在使用Sublime Text,而你似乎在使用WebStorm。这里有很大的区别。另外,如果你运行代码,它是可以工作的。只是你的IDE没有将其识别为node.js项目,因为是package.json允许IDE将其识别为这样的项目。package.json在运行时不是必需的,你只需要用它来安装模块。 - Darin Dimitrov
正确的是我在使用WebStorm。我应该提到,但直到现在我才意识到它会有很大的区别。 - PositiveGuy
这个人正在使用Sublime Text,而你似乎在使用WebStorm。相当大的差异...它们有什么区别?我认为编辑器就是编辑器,你需要为任何类型的节点应用程序使用相同类型的结构。但是你说Sublime可以推断一些东西? - PositiveGuy
它仍然没有识别“require”关键字。请查看我的更新帖子。 - PositiveGuy

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