Meteor Support in WebStorm 9

This post is part of a series of posts covering features in WebStorm 9 EAP:

One of the most requested features for WebStorm has been support for Meteor, a framework for building both the frontend and backend of web applications using JavaScript. If you’re not familiar with Meteor, make sure you check-out their screencast which gives a quick intro to what it is about.

With WebStorm 9, we provide support for Meteor.
Download the latest WebStorm 9 EAP build right now to give it a try. Check the screencast to see the new features available.

Project Generator

The Meteor new project generator integrates with WebStorm’s New Project allowing us to create projects directly from within WebStorm

New Project

WebStorm automatically detects Meteor projects, and excludes the necessary .meteor/local folder that contains the built app, keeping it out of the project scope and thus avoiding WebStorm from performing unnecessary indexing. One step less we need to worry about.

Project Structure

Meteor API Completion

All Meteor projects will now automatically have the core Meteor files configured as external libraries which means that WebStorm will offer API completion for these

Completion API

Running and Debugging Meteor Applications

WebStorm provides support for creating Run and Debug configuration for Meteor applications.

Run Config

The main benefit of this integration is that you can now easily debug both client and server-side Meteor JavaScript code with the WebStorm debugger.

When WebStorm runs Meteor it uses the -once which disables Meteor’s auto reload feature. The reason for this is that the way it currently works is incompatible with WebStorms autosave option. We are working with the Meteor team/community to try and think of ways in which we could provide this feature from within WebStorm. But that it still in the works.

Spacebars Support

WebStorm 9 also provides support for Spacebars via Handlebars support which already exists in WebStorm, with completion for if and each directives. There is also support for navigation between JavaScript source code and templates, allowing for easy navigation by using Ctrl+B (Cmd+B) to go to Declaration

Navigate to template

Try it out. Let us know what you think and how we can improve things.

Upd: in WebStorm 9.0.2+ we added a new Enable Meteor Hot code push configuration option for running Meteor apps: it’s available in Preferences | Languages & Frameworks | JavaScript | Meteor and it allows WebStorm start Meteor apps with its “Hot push on changes” feature enabled.


Develop with pleasure!
JetBrains WebStorm Team

This entry was posted in Cool Feature, Early Access Preview and tagged . Bookmark the permalink.

78 Responses to Meteor Support in WebStorm 9

  1. This looks great! I’ve been waiting a long time.
    Quick question – any chance to get spy-js working with meteor? Server/client side? That would be so helpful I’d probably have to send you guys like 10% of my salary for this feature!

    • Ekaterina Prigara says:

      Spy-js would work with ease for client-side, just like for any website – start spy-js session, run Meteor and then open the app in the browser. For server-side it won’t work.

      • I was afraid it would work “just like for any website”. I hoped for the implementation that would match the function calls intercepted by spyJS with the functions inside my local source code.
        But, for now – thanks for your answer!
        I will get back to this when I have a chance to test the 9.0 EAP version.

      • Daniel says:

        Hi, I am new to WebStorm.

        Can you please explain in more detail how to make Spy-js work with a meteor app? That is, what do I need to enter in the configurations, and how to initiate the session(s)?

        When I run the Spy-js session and the meteor session, it does not capture any events.


  2. Dan Swain says:

    Very glad to see your support for Meteor. Instead of only using Ctrl+B (Cmd+B) to go to a Declaration, please also include Ctrl-left mouse click to go to a Declaration (or some key combination such as Ctrl-Shift plus the left mouse click.

  3. Rune Jeppesen says:

    This looks awesome! I will try it out soon!
    The only consequence ot the lack of auto reload is that we will have to press F5, right?

    • Andrey Starovoyt says:

      Hi. It means you have to restart WebStorm Meteor run configuration manually to apply changes. After restarting browser content will be updated automatically.

  4. Pingback: WebStorm 9 now Supports Meteor - Sysads Gazette

  5. Dave says:

    Go to declaration does not work for me at all. Webstorm still thinks Template. is unresolved. Running Ubuntu 14.04. Even in a meteor project created by webstorm this does not work. Webstorm build 138.1988

    • Andrey Starovoyt says:

      Have you changed ‘File Types’ mapping for *.html files? The pattern should be *.html -> ‘HTML files’.

      • Dave says:

        I had suspected that was what was causing the issue, but I’ve since changed *.html back to being under HTML files and the template is still “unresolved.”

      • Dave says:

        Narrowed it down. It works on any new templates I write, but the existing ones aren’t hooked up. I have to rename my template names, save, then rename them back.

        • Andrey Starovoyt says:

          You just need run an action ‘File -> Invalidate caches’.

          • jwjb says:

            I have the same problem when I refactor and/or rename a file name, e.g. renaming a .js file breaks Meteor API Completion which is not corrected by ‘File -> Invalidate Caches’. The workaround I have for this problem is to create a new .js file and cut-and-paste this old .js code into this new .js file and Meteor API Completion works again.

          • Serkan Durusoy says:


            Is this problem resolved? I just downloaded the trial and opened up an existing project only to find out that go to declaration does not work. I’m on ubuntu 14.04 64-bit as well.

            And indeed, it does work with new files that are generated within the ide.

            This is kind of a blocker for sharing projects between developers.

  6. Serkan Durusoy says:

    Does it support latest 9.2 api’s, cordova support etc?

    • Andrey Starovoyt says:

      WebStorm 9 EAP (138.1988) bundled with code completion for Meteor Of course we will update the supported api to the last Meteor version. There is no integration for meteor-cordova in WS9. You can file an issue with your thoughts about the meteor-corodva support in WebStorm on our tracker

  7. Rune Jeppesen says:

    How can I see the Meteor server terminal (where I previously had to type meteor to get the project going)

    • Ekaterina Prigara says:

      Could you please tell us a bit more what would you like to do?
      If you’d like to use WebStorm’s built-in terminal, go to the menu View – Tool windows – Terminal.

      • jwjb says:

        Just love having the ability to access the terminal in Webstorm 9 and by clicking on ‘+’ it is easy to open multiple tabs, e.g. Meteor, MongoDB, Files, etc.

  8. Girish says:

    Does Webstorm 9 allow the development of Meteor.js on Windows (as this usually requires a number of hacks).

  9. gimli says:

    A couple of problems/questions mainly using Coffeescript:
    – Go to Declaration doesn’t work with Coffeescript source
    – Debugging server and client-side with Coffeescript it’s possible/supported in some way?

    • Ekaterina Prigara says:

      Should work fine if functions, methods, variables are resolved. Please share the code sample that reproduces the problem.
      To debug CoffeeScript you need compiled JS and sourcemaps.

      • jungwon jin says:

        I have same issue, but slightly different.
        The debugger break point of Client side’s coffee script works well, but server side doesn’t.
        I don’t understand why only one side was working, should be some problem or something I missed.

        The debugger attached successfully both of them, but the break-point of server side doesn’t show V check in the middle, and not working.

        Any ideas?


        • Ekaterina Prigara says:

          It’s hard to tell what might be the reason without code samples and run/debug configurations you use. In general, CoffeeScript debug should work fine if you have source maps, as I said.
          Please contact our tech support, it would be easier to investigate the case.

      • Jan says:

        I’ve done a simple “meteor create blog” and “meteor add coffeesript”.

        Then I renamed the hello.js to and replaced the content with coffeescripted code:

        But Template.hello does not link anymore to the hello.html template.

  10. gimli says:

    1. Create new Meteor project in WebStorm with default template.
    2. In file hello.js if you cmd+click over Template.hello WS correctly jump to template definition in hello.html
    3. meteor add coffeescript and translate and rename hello.js in
    4. In if you move mouse over Template.hello WS says ‘Unresolved variable’ and the go to template function doesn’t work

    Same application, I set some breakpoints and start app with debugger but they don’t work (seems WS not see source maps in .meteor/local/…)
    After some experiments I included .meteor/local directory in the project and debugging client-side coffescript code now works but server-side still not working.

  11. Laurentiu says:

    Is there any way to debug from windows when running on vagrant linux machine?

  12. Aaron says:

    This might have been asked, but remote debugging and stack trace for Meteor? Deployment to cloud? Mongo/MiniMongo “viewer/editor”?

  13. Pingback: Java Annotated Monthly – October 2014 | JetBrains IntelliJ IDEA Blog

  14. Anton says:

    Tried v6 and v7, tried 9 for Meteor support again. Debugging not working (stops at the first command, ignoring the breakpoints), Coffeescript support seems to be even worse. But the best thing: Every time I save a file I have to restart meteor. Sorry, even edlin is more productive. Will try version 10 again.
    Really loved RubyMine, bought it and used it some time, abandoned it because it creates a mess with the gems all the time. Would love to use both, but they are unusable. Sorry.

    • Andrey Starovoyt says:

      If you can share a code sample where debugger is not working properly it would be great. It is very important, because debugging of a Meteor app is one of the main features in WS9.
      WS9 doesn’t have major changes for CoffeeScript support (only several bugfixes) but if you have an idea for improvement, please, file an issue at out tracker
      The Meteor ‘hot code push’ feature contradicts autosave and debug functionality in WebStorm.
      Anyway you can:
      1) Call shortcut for re-starting a meteor run-configuration
      2) Disable WebStorm autosave feature and start meteor manually (or as a run configuration for external tool). Unfortunatly, for debugging you have to kill the started app and run WebStorm’s Meteor debug cofiguration.
      3) Use the ‘NodeJS LiveEdit’ feature for server-side code

  15. Pingback: [Webinar Recording] A Deep Dive into WebStorm 9′s New Features | JetBrains WebStorm Blog

  16. Pingback: Webinar Recording: Deep Dive into WebStorm 9′s New Features | JetBrains Company Blog

  17. I was so excited about WebStorm 9, especially now that Meteor 1.0 is out. Getting server side debugging started using node inspector was cumbersome compared to a simple Ctrl-D to get debugging going in WS.

    Unfortunately I am sorely disappointed. Most importantly, developing Meteor without hot code reload is a huge step backwards. Having to restart the debuger after every file save is just too slow and unproductive once you are used to it. Until this is resolved, WebStorm is unfortunately not a viable solution for Meteor debugging.

    • Pawel says:

      IMO it’s great that JetBrains released meteor support and the autosave issue does not matter actually. I disabled autosave and I’m running meteor in the console, as previously. Hope they will fix it in next release.
      I’m java stack developer and I’m not fluent in Java Script so intentionally I chose WebStorm to have this great code syntax support. My productivity increased so much, wow.

    • Andrey Starovoyt says:

      Unfortunately, Meteor hot code push kills the child nodejs process every time when server-side code was changed. Therefore, anyway we will have to restart the debugger after every file save.

  18. Dejay Clayton says:

    We are working with the Meteor team/community to try and think of ways in which we could provide this feature from within WebStorm.

    Maybe you could just offer us an option to turn off the stupid autosave feature. Yes I know, some developers like it. Some do not. Want to tell us how autosave can’t be implemented because of how WebStorm does refactoring? Funny, Eclipse does refactoring just fine without autosave.

    • Ekaterina Prigara says:

      Please feel free to disable autosaving in WebStorm: go to Preferences: Appearance & Behavior | System Settings – uncheck Save files on frame deactivation. Then start meteor manually.
      We don’t want to tell you anything about refactorings.

  19. tom says:

    I thought PHPStorm was a superset of Webstorm.

    When will PHPStorm users get to have these Meteor features? Is there a PHPStorm 9 EAP yet?

  20. Dmitrijs says:

    How can I enable highlighting of iron:router functionality in WebStorm?

    • Andrey Starovoyt says:

      iron:router is a simple meteor package. You can open your ‘packages’ file in editor and click ‘Import packages as libraries’ link shown in upper right corner.

      • Hi,
        Can you elaborate a bit on this. I open the packages file within in the .meteor directory. And where should I find the ‘Import packages as libraries’ link? There is not much in the upper right corner. Do I need an additional plugin? I’m using PhpStorm 8.0.1 with the meteor plugin. Thanks.

      • jwjb says:

        Code completion works great for the packages I have used thus far, but it would be great if it displayed the parameters too which have not been displayed in any of these packages. For example, for Underscore.js: typing ‘_.sortedIndex’ displays ‘_.sortedIndex() (several definitions)’ instead of ‘_.sortedIndex(list, value, [iteratee], [context])’ which forces manually looking up the function to see what arguments can be passed.

        • Andrey Starovoyt says:

          Try to import only server-side packages (xor client-side) for avoiding duplication. Unfortunately we cannot provide ‘*d.ts’ stubs for non-Meteor API because there is no such high quality documentation for packages

          • jwjb says:

            Tried this by commenting out all packages except packages for client or server-side code; respectively and still get (several definitions) as a response, but it is good this feature does work for Meteor API Completion and hopefully Meteor.js (Atmospherejs) packages will come with documentation at some point to enable complete code completion for them as well.

        • Andrey Starovoyt says:

          >Tried this by commenting out all packages except packages for client or server-side code;
          No, I mean if you click ‘Import packages as libraries’ then selected should be only ‘server-side’ checkbox (and unselected ‘client’ & ‘cordova’)

          • jwjb says:

            Thanks, and everything looks better for the test runs thus far, i.e. open ‘.meteor/packages’ > ‘Import packages as library’ > checkmark ‘Import client’ which gives after adding Underscore.js package and typing ‘_.sortedIndex’ displays ‘sortedIndex(array, obj, iterator, context)’ which is much more helpful. Code completion for other Underscore.js functions such as bind, partial, etc and packages like Iron:Router and others are not as complete, but this process is good to know so thanks again.

  21. Serkan Durusoy says:


    It seems Meteor support is at version 0.9.x but Meteor 1.0 is already out. Is there a way to update the Meteor libraries that Webstorm uses?

    Currently one can run meteor update on the shell to update meteor globally or run it within a project root directory to update the version of meteor that that project uses.

    Yes, multiple Meteor versions do happily coexist on the same machine.

    So, what is the proper way of getting Webstorm to use the updated (or better yet project specific) Meteor version?

    I could currently live with a global 1.0 update if per project updates are not available yet.

    • Andrey Starovoyt says:

      There is no significant changes in Meteor API between versions 0.9.4 and 1.0. So you don’t need update meteor library to version 1.0.
      WebStorm Meteor Library corresponds to single Meteor version. We try to keep Meteor Library up to date, so in the next WS release 9.0.2 we will update Meteor Library to 1.0 or to the next version.
      If you really need have the library with old Meteor API version you can disable Meteor Library and attach old meteor*.d.ts file as an external library (you can download old files here I am not sure that is is really necessary because Meteor API changes between versions are mostly cosmetic.

  22. Dominic says:


    is there a way for easy include all Meteor packages into a project? Currently I need to include selective each package, but as its connected to the package version it needs to get updated regularly. An automatic import would be great for the latest verions of the folder ~/.meteor/packages and from this only the required files.
    I tried to include the whole packages folder but then Webstorm isn’t able to run smoothly.

  23. Eric says:

    How do I add the Spacebars library to my meteor project, such that Spacebars.SafeString can auto-complete (and not show a code warning)?

  24. Eric says:

    I also seem to having issue with JSLint validation now in WS 10

    Template is showing an “Unresolved variable or type”,
    “Spacebars” was used before it was defined and
    console.log is “Unresolved variable or type”
    I added “Template” to the predefined field in the JSLint settings and selected the console option. This fixed it in WS9, but it seems to have come back up in WS10.

Leave a Reply

Your email address will not be published. Required fields are marked *