Skip to content

Using es_modules and node plugin together breaks jump to definition in some casesΒ #1049

@abose

Description

@abose

Hi,

When trying to enable both es_modules and node plugin together, jump to definition query wont work, but completions requests work if a file is imported without specifying .js extension as described below.

We have the following tern init code in Brackets:

ternOptions = {
        defs: env,
        async: true,
        getFile: getFile,
        plugins: {
            commonjs: true,
            requirejs: {},
            angular: true,
            complete_strings: true,
            doc_comment: true,
            doc_comments: true,
            es_modules: true,
            node: true,
            node_resolve: true
        }
    };

Jump to definition fails in ternjs demo site as well https://ternjs.net/doc/demo/index.html#ES6 if the init for the demo includes node: true, along with the current tern init options in demo.

The issue can be recreated with three files below, fail.js, pass.js and list.js with contents below:

// fail.js
import {test} from "./list"

// pass.js
import {test} from "./list.js"

// list.js
export function test(){}

The problem:

  1. Jump to definition tern query will not work if we try to trigger it from line1: test in fail.js, but it will work from pass.js .
  2. However, completions requests pass for both cases to get code hints.
  3. The problem is not present if i only use es_modules plugin and not node plugin.

expected result

  1. Jump to definition query and completions query should behave the same. But having completions and definitions error tolerant would help with edits.
  2. Should behave consistently with both es_modules plugin and node plugin enabled.

Background reading done

https://stackoverflow.com/questions/55251956/how-does-javascript-import-find-the-module-without-an-extension

Thanks,
Arun.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions