Skip to content

Named export is not defined when used in destructuring object #1791

Closed as not planned
@inakiabt

Description

@inakiabt

Describe the bug

Looks like imported named exports are not being correctly transformed when used in object desctructuring.

// types.js
export const NAME = 'test';
// helper.js
import { NAME } from './types';

console.log('NAME', NAME);
export const run = ({ [NAME]: result }) => result;

When running I get this error:

 FAIL  test/helper1.spec.js > should 
ReferenceError: NAME is not defined
 ❯ Module.run test/helper1.js:4:31
      2| 
      3| console.log('NAME', NAME);
      4| export const run = ({ [NAME]: result }) => result;
       |                               ^
      5| 

This is the transform result of my helper.js file:
image

As can be seen, NAME isn't not correctly referenced.

Originally posted by @inakiabt in #1789

Reproduction

https://stackblitz.com/edit/vitest-dev-vitest-eg6hlk?file=test%2Fhelper1.js

There are 3 tests. All of them tests a simple function that uses an imported constant to destruct an object and return the result.

for test 1 and 2, the constant (NAME) seems to be "not defined" to vitest.
for test 3, I use a different the constant (n) that seems to be defined but it doesn't have the correct value when running the test.

System Info

System:
    OS: macOS 12.5
    CPU: (12) x64 Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz
    Memory: 795.55 MB / 16.00 GB
    Shell: 5.1.16 - /usr/local/bin/bash
  Binaries:
    Node: 16.10.0 - ~/.nvm/versions/node/v16.10.0/bin/node
    npm: 7.24.0 - ~/.nvm/versions/node/v16.10.0/bin/npm
    Watchman: 2022.07.04.00 - /usr/local/bin/watchman
  Browsers:
    Chrome: 103.0.5060.134
    Firefox: 102.0.1
    Safari: 15.6
  npmPackages:
    vite: ^2.9.14 => 2.9.14 
    vitest: ^0.20.3 => 0.20.3

Used Package Manager

npm

Validations

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions