Skip to content

watch runner crash with ERR_INVALID_ARG_TYPE #47692

@sosoba

Description

@sosoba

Version

v18.16.0

Platform

Microsoft Windows NT 10.0.22621.0 x64

Subsystem

internal/watch_mode/files_watcher.js

What steps will reproduce the bug?

Use node --watch script.js

How often does it reproduce? Is there a required condition?

When third-party tool written in Java works on the same directory.

What is the expected behavior? Why is that the expected behavior?

Normal running.

What do you see instead?

TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received null
    at __node_internal_captureLargerStackTrace (node:internal/errors:490:5)
    at new NodeError (node:internal/errors:399:5)
    at validateString (node:internal/validators:163:11)
    at resolve (node:path:167:9)
    at FSWatcher.<anonymous> (node:internal/watch_mode/files_watcher:94:30)
    at FSWatcher.emit (node:events:513:28)
    at FSWatcher._handle.onchange (node:internal/fs/watchers:215:12) {
  code: 'ERR_INVALID_ARG_TYPE'
}

Additional information

The reason for the error is the call resolve without checking if the name is not null

watcher.on('change', (eventType, fileName) => this
.#onChange(recursive ? resolve(path, fileName) : path));

Regardles to documentation:

filename is not always guaranteed to be provided. Therefore, don't assume that filename argument is always provided in the callback, and have some fallback logic if it is null.

Metadata

Metadata

Assignees

No one assigned

    Labels

    watch-modeIssues and PRs related to watch mode

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions