无法在WebStorm中列出Grunt任务错误

时间:2017-03-17 06:13:22

标签: javascript node.js gruntjs webstorm babeljs

我在Windows 7上使用JetBrains WebStorm 11.0.4。我有一个带有Gruntfile.js文件的项目,当我尝试使用WebStorm“重新加载任务”时,WebStorm失败了:

在Grunt窗格中

!无法列出任务”。

错误的详细信息如下:

Registering "C:\Program Files (x86)\JetBrains\WebStorm 11.0.4\plugins\JavaScriptLanguage\grunt_js\tasks" tasks.
Loading "grunt-tasks-fetcher.js" tasks...ERROR
>> Error: Couldn't find preset "es2015" relative to directory "C:\\Program Files (x86)\\JetBrains\\WebStorm 11.0.4\\plugins\\JavaScriptLanguage\\grunt_js\\tasks"
>>   at <my_project>\node_modules\babel-core\lib\transformation\file\options\option-manager.js:395:17
>>   at Array.map (native)
>>   at OptionManager.resolvePresets (<my_project>\node_modules\babel-core\lib\transformation\file\options\option-manager.js:387:20)
>>   at OptionManager.mergePresets (<my_project>\node_modules\babel-core\lib\transformation\file\options\option-manager.js:370:10)
>>   at OptionManager.mergeOptions (<my_project>\node_modules\babel-core\lib\transformation\file\options\option-manager.js:330:14)
>>   at OptionManager.init (<my_project>\node_modules\babel-core\lib\transformation\file\options\option-manager.js:488:10)
>>   at compile (<my_project>\node_modules\babel-register\lib\node.js:112:69)
>>   at loader (<my_project>\node_modules\babel-register\lib\node.js:158:14)
>>   at Object.require.extensions.(anonymous function) [as .js] (<my_project>\node_modules\babel-register\lib\node.js:168:7)
>>   at Module.load (<my_project>\node_modules\coffee-script\lib\coffee-script\register.js:45:36)
>>   at Function.Module._load (module.js:314:12)
>>   at Module.require (module.js:367:17)
>>   at require (internal/module.js:16:19)
>>   at loadTask (<my_project>\node_modules\grunt\lib\grunt\task.js:316:10)
>>   at <my_project>\node_modules\grunt\lib\grunt\task.js:354:7
>>   at Array.forEach (native)
>>   at loadTasks (<my_project>\node_modules\grunt\lib\grunt\task.js:353:11)
>>   at task.loadTasks (<my_project>\node_modules\grunt\lib\grunt\task.js:365:5)
>>   at Array.forEach (native)
>>   at Task.task.init (<my_project>\node_modules\grunt\lib\grunt\task.js:457:45)
>>   at Object.grunt.tasks (<my_project>\node_modules\grunt\lib\grunt.js:111:8)
>>   at Object.module.exports [as cli] (<my_project>\node_modules\grunt\lib\grunt\cli.js:27:9)
>>   at Object.<anonymous> (C:\Users\ME\AppData\Roaming\nvm\v5.6.0\node_modules\grunt-cli\bin\grunt:44:20)
>>   at Module._compile (module.js:413:34)
>>   at Object.Module._extensions..js (module.js:422:10)
>>   at Module.load (module.js:357:32)
>>   at Function.Module._load (module.js:314:12)
>>   at Function.Module.runMain (module.js:447:10)
>>   at startup (node.js:140:18)
>>   at node.js:1001:3

Running tasks: _intellij_grunt_tasks_fetcher
Warning: Task "_intellij_grunt_tasks_fetcher" not found. Use --force to continue.

Aborted due to warnings.

用Google搜索:

webstorm "failed to list tasks" gruntfile

...用英语返回精确零结果。

我正在使用nvm来管理我的计算机上的多个Node.js版本。我已经看到other posts on SO在这样的场景中提到了与nvm的一些狡猾的交互,但是我能说的最好,我不认为这些轶事适用于我的情况,因为我正在使用Windows。

我已经在这几个小时内在网上浏览了几个小时,并尝试了各种各样的事情 - 似乎没有任何帮助。

更新

我为此授予了赏金 - 这是我自己得到的最接近解决方案 - 但 root 问题并未真正解决。在对Babel代码本身进行一些讨论后,看起来Babel错误地寻找相对于WebStorm目录的es2015预设C:\Program Files (x86)\JetBrains\WebStorm 11.0.4\plugins\JavaScriptLanguage\grunt_js\tasks

不知道为什么。

如果我从node_modules目录移动 C:\Program Files (x86)\JetBrains\WebStorm 11.0.4\plugins\JavaScriptLanguage\grunt_js\tasks

进入

C:\Program Files (x86)\JetBrains\WebStorm 11.0.4\plugins\JavaScriptLanguage\grunt_js

...然后它有效。 有人知道为什么吗?(我的意思是,我明白也许这样做可以满足Babel和WebStorm寻找node_modules目录的愿望,但为什么是那个?)

2 个答案:

答案 0 :(得分:3)

Error: Couldn't find preset "es2015"babel-cli错误。在指定加载npm模块babel-preset-es2015的某些位置,项目目录中的文件.babelrc是否设置了预设?

您可以尝试安装babel-preset-es2015,看看是否仍然出现错误。

答案 1 :(得分:0)

尝试使用node v4.5.0或更高版本以及最新版本的npm,你能尝试一下吗?

  • 删除项目的node_modules
  • npm install -g npm
  • 确保由{npm
  • 安装的babel-preset-es2015babel-preset-stage-2
  • .babelrc文件中的babel配置

    "babel": { "presets": [ "es2015", .... ] },

  • 运行WebStorm“重新加载任务”

可能这应该是可行的。