Skip to content

Cannot import 'zx/globals' in global installed zx #595

@atuk721

Description

@atuk721

For better autocomplete in VS Code, I'm going to add import 'zx/globals' to my script.

But when I added it to my script, the script became to raise an error of ERR_MODULE_NOT_FOUND.
I added global node modules path to NODE_PATH but it also has an error with a message of "Did you mean to import zx/build/globals.js?".

When npm link zx is executed, it works successfully but I don't want to have node_modules in current path.

So is there any way to achieve to use global installed zx and to have import 'zx/globals' in the script without local node_modules?

Expected Behavior

A script is executed successfully.

Actual Behavior

A script throws an error of "ERR_MODULE_NOT_FOUND".

Steps to Reproduce the Problem

$ docker run -it --rm node:18-alpine sh
/ # mkdir work
/ # cd work
/work # npm i -g zx

added 55 packages in 4s

10 packages are looking for funding
  run `npm fund` for details
npm notice 
npm notice New minor version of npm available! 9.5.0 -> 9.6.1
npm notice Changelog: https://github.com/npm/cli/releases/tag/v9.6.1
npm notice Run npm install -g npm@9.6.1 to update!
npm notice 
/work # echo "import 'zx/globals'" > test.mjs
/work # zx test.mjs
Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'zx' imported from /work/test.mjs
    at new NodeError (node:internal/errors:399:5)
    at packageResolve (node:internal/modules/esm/resolve:889:9)
    at moduleResolve (node:internal/modules/esm/resolve:938:20)
    at defaultResolve (node:internal/modules/esm/resolve:1153:11)
    at nextResolve (node:internal/modules/esm/loader:163:28)
    at ESMLoader.resolve (node:internal/modules/esm/loader:838:30)
    at ESMLoader.getModuleJob (node:internal/modules/esm/loader:424:18)
    at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:77:40)
    at link (node:internal/modules/esm/module_job:76:36) {
  code: 'ERR_MODULE_NOT_FOUND'
}
/work # export NODE_PATH=$(npm root -g)
/work # zx test.mjs
Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'zx' imported from /work/test.mjs
Did you mean to import zx/build/globals.js?
    at new NodeError (node:internal/errors:399:5)
    at packageResolve (node:internal/modules/esm/resolve:889:9)
    at moduleResolve (node:internal/modules/esm/resolve:938:20)
    at defaultResolve (node:internal/modules/esm/resolve:1153:11)
    at nextResolve (node:internal/modules/esm/loader:163:28)
    at ESMLoader.resolve (node:internal/modules/esm/loader:838:30)
    at ESMLoader.getModuleJob (node:internal/modules/esm/loader:424:18)
    at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:77:40)
    at link (node:internal/modules/esm/module_job:76:36) {
  code: 'ERR_MODULE_NOT_FOUND'
}
/work # npm link zx

added 1 package in 139ms
/work # zx test.mjs
/work # 

Specifications

  • Version: 7.2.0
  • Platform: Linux (Docker image of node:18-alpine)

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