phoenix icon indicating copy to clipboard operation
phoenix copied to clipboard

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

Open abose opened this issue 2 years ago • 0 comments

tracking tern issue: https://github.com/ternjs/tern/issues/1049

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
        }
    };

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.

abose avatar Aug 07 '22 07:08 abose