Unitech / Unitech/pm2

pm2 stopped working, error Error: ENOENT: no such file or directory, mkdir 'U:\'

Open
#4,789 3 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
JavaScript
Stars
43.3k
Forks
2.7k
PR merge metrics
No merged PRs in 30d

Description

I use pm2 a lot for deploying my project from my local windows installation on a remote unix machine.

It worked great, until recently. I can not identify what I did that pm2 now suddenly fails.

I already tried un- and reinstall pm2 but that did not help.

Here is the error I get when I want to run pm2:

C:\Privat\dev\am_dev>pm2 deploy
Error: ENOENT: no such file or directory, mkdir 'U:'
at Object.mkdirSync (fs.js:914:3)
at mkdirpManualSync (C:\Users\XXXX\AppData\Roaming\npm\node_modules\pm2\node_modules\mkdirp\lib\mkdirp-manual.js:36:19)
at mkdirpManualSync (C:\Users\XXXX\AppData\Roaming\npm\node_modules\pm2\node_modules\mkdirp\lib\mkdirp-manual.js:52:43)
at mkdirpManualSync (C:\Users\XXXX\AppData\Roaming\npm\node_modules\pm2\node_modules\mkdirp\lib\mkdirp-manual.js:52:43)
at mkdirpNativeSync (C:\Users\XXXX\AppData\Roaming\npm\node_modules\pm2\node_modules\mkdirp\lib\mkdirp-native.js:33:14)
at Function.mkdirpSync [as sync] (C:\Users\XXXX\AppData\Roaming\npm\node_modules\pm2\node_modules\mkdirp\index.js:21:7)
at module.exports.Client.initFileStructure (C:\Users\XXXX\AppData\Roaming\npm\node_modules\pm2\lib\Client.js:133:25)
at new module.exports (C:\Users\XXXX\AppData\Roaming\npm\node_modules\pm2\lib\Client.js:38:8)
at new API (C:\Users\XXXX\AppData\Roaming\npm\node_modules\pm2\lib\API.js:108:19)
at Object. (C:\Users\XXXX\AppData\Roaming\npm\node_modules\pm2\lib\binaries\CLI.js:22:11)
Error: ENOENT: no such file or directory, mkdir 'U:'
at Object.mkdirSync (fs.js:914:3)
at mkdirpManualSync (C:\Users\XXXX\AppData\Roaming\npm\node_modules\pm2\node_modules\mkdirp\lib\mkdirp-manual.js:36:19)
at mkdirpManualSync (C:\Users\XXXX\AppData\Roaming\npm\node_modules\pm2\node_modules\mkdirp\lib\mkdirp-manual.js:52:43)
at mkdirpManualSync (C:\Users\XXXX\AppData\Roaming\npm\node_modules\pm2\node_modules\mkdirp\lib\mkdirp-manual.js:52:43)
at mkdirpNativeSync (C:\Users\XXXX\AppData\Roaming\npm\node_modules\pm2\node_modules\mkdirp\lib\mkdirp-native.js:33:14)
at Function.mkdirpSync [as sync] (C:\Users\XXXX\AppData\Roaming\npm\node_modules\pm2\node_modules\mkdirp\index.js:21:7)
at module.exports.Client.initFileStructure (C:\Users\XXXX\AppData\Roaming\npm\node_modules\pm2\lib\Client.js:141:25)
at new module.exports (C:\Users\XXXX\AppData\Roaming\npm\node_modules\pm2\lib\Client.js:38:8)
at new API (C:\Users\XXXX\AppData\Roaming\npm\node_modules\pm2\lib\API.js:108:19)
at Object. (C:\Users\XXXX\AppData\Roaming\npm\node_modules\pm2\lib\binaries\CLI.js:22:11)
Error: ENOENT: no such file or directory, open 'U:.pm2\module_conf.json'
at Object.openSync (fs.js:458:3)
at Object.writeFileSync (fs.js:1355:35)
at module.exports.Client.initFileStructure (C:\Users\XXXX\AppData\Roaming\npm\node_modules\pm2\lib\Client.js:149:10)
at new module.exports (C:\Users\XXXX\AppData\Roaming\npm\node_modules\pm2\lib\Client.js:38:8)
at new API (C:\Users\XXXX\AppData\Roaming\npm\node_modules\pm2\lib\API.js:108:19)
at Object. (C:\Users\XXXX\AppData\Roaming\npm\node_modules\pm2\lib\binaries\CLI.js:22:11)
at Module._compile (internal/modules/cjs/loader.js:1138:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1158:10)
at Module.load (internal/modules/cjs/loader.js:986:32)
at Function.Module._load (internal/modules/cjs/loader.js:879:14)
Error: ENOENT: no such file or directory, mkdir 'U:'
at Object.mkdirSync (fs.js:914:3)
at mkdirpManualSync (C:\Users\XXXX\AppData\Roaming\npm\node_modules\pm2\node_modules\mkdirp\lib\mkdirp-manual.js:36:19)
at mkdirpManualSync (C:\Users\XXXX\AppData\Roaming\npm\node_modules\pm2\node_modules\mkdirp\lib\mkdirp-manual.js:52:43)
at mkdirpManualSync (C:\Users\XXXX\AppData\Roaming\npm\node_modules\pm2\node_modules\mkdirp\lib\mkdirp-manual.js:52:43)
at mkdirpNativeSync (C:\Users\XXXX\AppData\Roaming\npm\node_modules\pm2\node_modules\mkdirp\lib\mkdirp-native.js:33:14)
at Function.mkdirpSync [as sync] (C:\Users\XXXX\AppData\Roaming\npm\node_modules\pm2\node_modules\mkdirp\index.js:21:7)
at module.exports.Client.initFileStructure (C:\Users\XXXX\AppData\Roaming\npm\node_modules\pm2\lib\Client.js:157:25)
at new module.exports (C:\Users\XXXX\AppData\Roaming\npm\node_modules\pm2\lib\Client.js:38:8)
at new API (C:\Users\XXXX\AppData\Roaming\npm\node_modules\pm2\lib\API.js:108:19)
at Object. (C:\Users\XXXX\AppData\Roaming\npm\node_modules\pm2\lib\binaries\CLI.js:22:11)

                    -------------

/\\\\\\_/\\/\\/\\\\_
_/\/////////\_/\\\
/\\\/\///////\_
/\_
/\_/\//\_/\//\_/////\_
_/\\\\\\/
/\\///\/\/
/\_
/\/
/\/////////
/\_
///\/
/\_/\//_____
/\_
/\_////\_____/\//_____
/\_/\_/\_/\/__________
/\_/\_/\_/\\\\\\\_
_////////////////////////

                      Runtime Edition

    PM2 is a Production Process Manager for Node.js applications
                 with a built-in Load Balancer.

            Start and Daemonize any application:
            $ pm2 start app.js

            Load Balance 4 instances of api.js:
            $ pm2 start api.js -i 4

            Monitor in production:
            $ pm2 monitor

            Make pm2 auto-boot at server restart:
            $ pm2 startup

            To go further checkout:
            http://pm2.io/


                    -------------

Error: ENOENT: no such file or directory, open 'U:.pm2\module_conf.json'
at Object.openSync (fs.js:458:3)
at Object.readFileSync (fs.js:360:35)
at Object.Configuration.getAllSync (C:\Users\XXXX\AppData\Roaming\npm\node_modules\pm2\lib\Configuration.js:299:26)
at Object.Configuration.getSync (C:\Users\XXXX\AppData\Roaming\npm\node_modules\pm2\lib\Configuration.js:270:30)
at new API (C:\Users\XXXX\AppData\Roaming\npm\node_modules\pm2\lib\API.js:117:44)
at Object. (C:\Users\XXXX\AppData\Roaming\npm\node_modules\pm2\lib\binaries\CLI.js:22:11)
at Module._compile (internal/modules/cjs/loader.js:1138:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1158:10)
at Module.load (internal/modules/cjs/loader.js:986:32)
at Function.Module._load (internal/modules/cjs/loader.js:879:14)
internal/fs/utils.js:230
throw err;
^

Error: ENOENT: no such file or directory, open 'U:.pm2\pm2.log'
at Object.openSync (fs.js:458:3)
at module.exports.Client.launchDaemon (C:\Users\XXXX\AppData\Roaming\npm\node_modules\pm2\lib\Client.js:228:12)
at C:\Users\XXXX\AppData\Roaming\npm\node_modules\pm2\lib\Client.js:104:10
at C:\Users\XXXX\AppData\Roaming\npm\node_modules\pm2\lib\Client.js:320:14
at processTicksAndRejections (internal/process/task_queues.js:79:11)
at runNextTicks (internal/process/task_queues.js:66:3)
at listOnTimeout (internal/timers.js:518:9)
at processTimers (internal/timers.js:492:7) {
errno: -4058,
syscall: 'open',
code: 'ENOENT',
path: 'U:\.pm2\pm2.log'
}

BTW I find it weird that pm2 tries to identify something in folder U: which does not exist on my windows system.

Any help is appreciated.

EDIT: The exception above happens when I start pm2 from the VS Code terminal.
I did some tests with the normal cmd window, and followed another hint to execute

set PM2_HOME=.pm2

like described in this issue

After doing that, I could sucessfully use pm2 in the cmd window.

I restarted VSCode, run the same

set PM2_HOME=.pm2

and I could use pm2 also in VsCode.

Can anyone explain why I suddenly have to do this? Shouldnt the purpose of a global pm2 installation be that I can use it everywhere without setting the path manually every time?

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing the Windows path handling in lib/Client.js, lib/Configuration.js, and lib/binaries/CLI.js, using the reported VS Code terminal failure and PM2_HOME workaround as the reproduction case. Compare the initialization and configuration paths that produce U:\ and verify the behavior in a normal cmd window and the VS Code terminal. Done means pm2 deploy no longer attempts to create the invalid path without requiring PM2_HOME to be set manually.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript, node.js, vscode
Domain
cli
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.