lib: fix ERR_INVALID_ARG_TYPE with --enable-source-maps - #63215

Merged
nodejs-github-bot merged 3 commits into
nodejs:mainfrom
kimjune01:fix/assert-source-maps-regression
Aug 20, 2026
Merged

lib: fix ERR_INVALID_ARG_TYPE with --enable-source-maps#63215
nodejs-github-bot merged 3 commits into
nodejs:mainfrom
kimjune01:fix/assert-source-maps-regression

Conversation

@kimjune01

Copy link
Copy Markdown
Contributor

When --enable-source-maps is enabled but no source map exists for the script (e.g. a plain .mjs file), getErrorSourceLocation() returned undefined. This caused getErrMessage() to return undefined, which made innerOk() pass [undefined] as the message tuple to innerFail(), hitting the ERR_INVALID_ARG_TYPE guard instead of throwing AssertionError.

Fix all code paths in getErrorSourceLocation() that returned bare undefined to fall back to the raw generated source line, matching the behavior when source maps are disabled entirely. Also add a guard for when V8 fails to provide a source line at all.

Includes tests for both .mjs and .cjs files under --enable-source-maps.

Fixes: #63169

@nodejs-github-botnodejs-github-bot added errors Issues and PRs related to JavaScript errors originating in Node.js core. needs-ci PRs that need a full CI run. labels May 9, 2026
@atlowChemiatlowChemi added the source maps Issues and PRs related to source map support. label May 10, 2026
@atlowChemi

Copy link
Copy Markdown
Member

@kimjune01 I think the commit's module should be lib, not assert, as I don't think this changes assert specifically, that is mostly the symptom, not the actual issue, no?

@kimjune01

Copy link
Copy Markdown
ContributorAuthor

Good point — the root cause is in the source map resolution path, not assert itself. I'll update the title.

@kimjune01kimjune01 changed the title assert: fix ERR_INVALID_ARG_TYPE with --enable-source-mapslib: fix ERR_INVALID_ARG_TYPE with --enable-source-mapsMay 10, 2026
@idabeck-cpu

This comment was marked as spam.

@idabeck-cpu

This comment was marked as spam.

@idabeck-cpu

This comment was marked as spam.

@atlowChemi

Copy link
Copy Markdown
Member

Good point — the root cause is in the source map resolution path, not assert itself. I'll update the title.

@kimjune01 please reword the commit as well 🙏🏽
Let me know if any help is needed

@kimjune01
kimjune01force-pushed the fix/assert-source-maps-regression branch from 629761d to bef74ddCompareMay 11, 2026 04:00
@kimjune01

Copy link
Copy Markdown
ContributorAuthor

Done — reworded commit to lib: prefix.

@codecov

codecovBot commented May 24, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 33.33333% with 6 lines in your changes missing coverage. Please review.
✅ Project coverage is 90.12%. Comparing base (d4d35c6) to head (da520ed).
⚠️ Report is 406 commits behind head on main.

Files with missing linesPatch %Lines
lib/internal/errors/error_source.js33.33%6 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #63215 +/- ##
=======================================
Coverage 90.12% 90.12% =======================================
Files 743 743 Lines 242415 242422 +7 Branches 45656 45653 -3 =======================================
+ Hits 218476 218491 +15 
Misses 15438 15438 + Partials 8501 8493 -8 
Files with missing linesCoverage Δ
lib/internal/errors/error_source.js82.55% <33.33%> (+0.73%)⬆️

... and 32 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@atlowChemi

Copy link
Copy Markdown
Member

@kimjune01 the CI failures all seem related to the changes

Comment threadtest/parallel/test-assert-ok-source-maps.js Outdated
@kimjune01
kimjune01force-pushed the fix/assert-source-maps-regression branch from 6eddc82 to 4b39cd1CompareMay 26, 2026 23:46
@kimjune01

Copy link
Copy Markdown
ContributorAuthor

Rebased onto current main and fixed the two lint failures:

  • Dropped the non-ASCII em-dash from the comments (lint-js-and-md)
  • Added the DCO Signed-off-by (lint-commit-message)

The earlier build failures looked unrelated to this lib/ change; should be clean on the fresh run.

@kimjune01
kimjune01force-pushed the fix/assert-source-maps-regression branch from 4b39cd1 to 6a0b05fCompareMay 26, 2026 23:49
Comment threadtest/parallel/test-assert-ok-source-maps.js Outdated
@kimjune01

Copy link
Copy Markdown
ContributorAuthor

Done. Moved both cases into test-node-output-sourcemaps.mjs as snapshot fixtures under source-map/output/ with a // Flags: --enable-source-maps directive; dropped the standalone test.

@atlowChemiatlowChemi added the request-ci Add this label to start a Jenkins CI on a PR. label Jun 28, 2026
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Jun 28, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@legendecaslegendecas added request-ci Add this label to start a Jenkins CI on a PR. author ready PRs with CI started, the required approvals, and no outstanding review comments. labels Jul 15, 2026
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Jul 15, 2026
@nodejs-github-bot

This comment was marked as outdated.

@nodejs-github-bot

This comment was marked as outdated.

@nodejs-github-bot

This comment was marked as outdated.

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

Signed-off-by: June Kim <kimjune01@gmail.com>
Fold the .mjs and .cjs --enable-source-maps cases from the standalone
test-assert-ok-source-maps.js into the existing snapshot output test,
following the setup in test-node-output-sourcemaps.mjs as requested in
review. The fixtures live under test/fixtures/source-map/output/ with a
`// Flags: --enable-source-maps` directive and assert AssertionError
output via snapshots instead of bespoke spawnSync assertions.
Refs: nodejs#63169
Signed-off-by: June Kim <kimjune01@gmail.com>
The literal first argument to assert() is intentional in these
regression fixtures (the .snapshot files pin the exact source line and
column), so disable the rule inline rather than rewriting the call.
@kimjune01
kimjune01force-pushed the fix/assert-source-maps-regression branch from b15e1c6 to da520edCompareJuly 26, 2026 02:53
@kimjune01

Copy link
Copy Markdown
ContributorAuthor

Rebased onto main. Could someone run CI?

@atlowChemiatlowChemi added the request-ci Add this label to start a Jenkins CI on a PR. label Jul 26, 2026
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Jul 26, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@legendecaslegendecas added the request-ci Add this label to start a Jenkins CI on a PR. label Aug 19, 2026
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Aug 19, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@legendecaslegendecas added commit-queue PRs queued for automated landing through the Commit Queue. commit-queue-squash PRs the Commit Queue should land as one squashed commit. labels Aug 20, 2026
@nodejs-github-bot
nodejs-github-bot merged commit b5d37cd into nodejs:mainAug 20, 2026
88 of 89 checks passed
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

Landed in b5d37cd

@nodejs-github-botnodejs-github-bot removed the commit-queue PRs queued for automated landing through the Commit Queue. label Aug 20, 2026
aduh95 pushed a commit that referenced this pull request Aug 25, 2026
Signed-off-by: June Kim <kimjune01@gmail.com>
PR-URL: #63215Fixes: #63169
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
aduh95 pushed a commit that referenced this pull request Aug 25, 2026
Signed-off-by: June Kim <kimjune01@gmail.com>
PR-URL: #63215Fixes: #63169
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

author readyPRs with CI started, the required approvals, and no outstanding review comments.commit-queue-squashPRs the Commit Queue should land as one squashed commit.errorsIssues and PRs related to JavaScript errors originating in Node.js core.needs-ciPRs that need a full CI run.source mapsIssues and PRs related to source map support.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

assert: ERR_INVALID_ARG_TYPE on failing assert(value) under --enable-source-maps (v26 regression)

7 participants

@kimjune01@atlowChemi@idabeck-cpu@nodejs-github-bot@twada@jasnell@legendecas
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

lib: fix ERR_INVALID_ARG_TYPE with --enable-source-maps - #63215

Merged
nodejs-github-bot merged 3 commits into
nodejs:mainfrom
kimjune01:fix/assert-source-maps-regression
Aug 20, 2026
Merged

lib: fix ERR_INVALID_ARG_TYPE with --enable-source-maps#63215
nodejs-github-bot merged 3 commits into
nodejs:mainfrom
kimjune01:fix/assert-source-maps-regression

Conversation

@kimjune01

Copy link
Copy Markdown
Contributor

When --enable-source-maps is enabled but no source map exists for the script (e.g. a plain .mjs file), getErrorSourceLocation() returned undefined. This caused getErrMessage() to return undefined, which made innerOk() pass [undefined] as the message tuple to innerFail(), hitting the ERR_INVALID_ARG_TYPE guard instead of throwing AssertionError.

Fix all code paths in getErrorSourceLocation() that returned bare undefined to fall back to the raw generated source line, matching the behavior when source maps are disabled entirely. Also add a guard for when V8 fails to provide a source line at all.

Includes tests for both .mjs and .cjs files under --enable-source-maps.

Fixes: #63169

@nodejs-github-botnodejs-github-bot added errors Issues and PRs related to JavaScript errors originating in Node.js core. needs-ci PRs that need a full CI run. labels May 9, 2026
@atlowChemiatlowChemi added the source maps Issues and PRs related to source map support. label May 10, 2026
@atlowChemi

Copy link
Copy Markdown
Member

@kimjune01 I think the commit's module should be lib, not assert, as I don't think this changes assert specifically, that is mostly the symptom, not the actual issue, no?

@kimjune01

Copy link
Copy Markdown
ContributorAuthor

Good point — the root cause is in the source map resolution path, not assert itself. I'll update the title.

@kimjune01kimjune01 changed the title assert: fix ERR_INVALID_ARG_TYPE with --enable-source-mapslib: fix ERR_INVALID_ARG_TYPE with --enable-source-mapsMay 10, 2026
@idabeck-cpu

This comment was marked as spam.

@idabeck-cpu

This comment was marked as spam.

@idabeck-cpu

This comment was marked as spam.

@atlowChemi

Copy link
Copy Markdown
Member

Good point — the root cause is in the source map resolution path, not assert itself. I'll update the title.

@kimjune01 please reword the commit as well 🙏🏽
Let me know if any help is needed

@kimjune01
kimjune01force-pushed the fix/assert-source-maps-regression branch from 629761d to bef74ddCompareMay 11, 2026 04:00
@kimjune01

Copy link
Copy Markdown
ContributorAuthor

Done — reworded commit to lib: prefix.

@codecov

codecovBot commented May 24, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 33.33333% with 6 lines in your changes missing coverage. Please review.
✅ Project coverage is 90.12%. Comparing base (d4d35c6) to head (da520ed).
⚠️ Report is 406 commits behind head on main.

Files with missing linesPatch %Lines
lib/internal/errors/error_source.js33.33%6 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #63215 +/- ##
=======================================
Coverage 90.12% 90.12% =======================================
Files 743 743 Lines 242415 242422 +7 Branches 45656 45653 -3 =======================================
+ Hits 218476 218491 +15 
Misses 15438 15438 + Partials 8501 8493 -8 
Files with missing linesCoverage Δ
lib/internal/errors/error_source.js82.55% <33.33%> (+0.73%)⬆️

... and 32 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@atlowChemi

Copy link
Copy Markdown
Member

@kimjune01 the CI failures all seem related to the changes

Comment threadtest/parallel/test-assert-ok-source-maps.js Outdated
@kimjune01
kimjune01force-pushed the fix/assert-source-maps-regression branch from 6eddc82 to 4b39cd1CompareMay 26, 2026 23:46
@kimjune01

Copy link
Copy Markdown
ContributorAuthor

Rebased onto current main and fixed the two lint failures:

  • Dropped the non-ASCII em-dash from the comments (lint-js-and-md)
  • Added the DCO Signed-off-by (lint-commit-message)

The earlier build failures looked unrelated to this lib/ change; should be clean on the fresh run.

@kimjune01
kimjune01force-pushed the fix/assert-source-maps-regression branch from 4b39cd1 to 6a0b05fCompareMay 26, 2026 23:49
Comment threadtest/parallel/test-assert-ok-source-maps.js Outdated
@kimjune01

Copy link
Copy Markdown
ContributorAuthor

Done. Moved both cases into test-node-output-sourcemaps.mjs as snapshot fixtures under source-map/output/ with a // Flags: --enable-source-maps directive; dropped the standalone test.

@atlowChemiatlowChemi added the request-ci Add this label to start a Jenkins CI on a PR. label Jun 28, 2026
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Jun 28, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@legendecaslegendecas added request-ci Add this label to start a Jenkins CI on a PR. author ready PRs with CI started, the required approvals, and no outstanding review comments. labels Jul 15, 2026
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Jul 15, 2026
@nodejs-github-bot

This comment was marked as outdated.

@nodejs-github-bot

This comment was marked as outdated.

@nodejs-github-bot

This comment was marked as outdated.

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

Signed-off-by: June Kim <kimjune01@gmail.com>
Fold the .mjs and .cjs --enable-source-maps cases from the standalone
test-assert-ok-source-maps.js into the existing snapshot output test,
following the setup in test-node-output-sourcemaps.mjs as requested in
review. The fixtures live under test/fixtures/source-map/output/ with a
`// Flags: --enable-source-maps` directive and assert AssertionError
output via snapshots instead of bespoke spawnSync assertions.
Refs: nodejs#63169
Signed-off-by: June Kim <kimjune01@gmail.com>
The literal first argument to assert() is intentional in these
regression fixtures (the .snapshot files pin the exact source line and
column), so disable the rule inline rather than rewriting the call.
@kimjune01
kimjune01force-pushed the fix/assert-source-maps-regression branch from b15e1c6 to da520edCompareJuly 26, 2026 02:53
@kimjune01

Copy link
Copy Markdown
ContributorAuthor

Rebased onto main. Could someone run CI?

@atlowChemiatlowChemi added the request-ci Add this label to start a Jenkins CI on a PR. label Jul 26, 2026
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Jul 26, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@legendecaslegendecas added the request-ci Add this label to start a Jenkins CI on a PR. label Aug 19, 2026
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Aug 19, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@legendecaslegendecas added commit-queue PRs queued for automated landing through the Commit Queue. commit-queue-squash PRs the Commit Queue should land as one squashed commit. labels Aug 20, 2026
@nodejs-github-bot
nodejs-github-bot merged commit b5d37cd into nodejs:mainAug 20, 2026
88 of 89 checks passed
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

Landed in b5d37cd

@nodejs-github-botnodejs-github-bot removed the commit-queue PRs queued for automated landing through the Commit Queue. label Aug 20, 2026
aduh95 pushed a commit that referenced this pull request Aug 25, 2026
Signed-off-by: June Kim <kimjune01@gmail.com>
PR-URL: #63215Fixes: #63169
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
aduh95 pushed a commit that referenced this pull request Aug 25, 2026
Signed-off-by: June Kim <kimjune01@gmail.com>
PR-URL: #63215Fixes: #63169
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

author readyPRs with CI started, the required approvals, and no outstanding review comments.commit-queue-squashPRs the Commit Queue should land as one squashed commit.errorsIssues and PRs related to JavaScript errors originating in Node.js core.needs-ciPRs that need a full CI run.source mapsIssues and PRs related to source map support.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

assert: ERR_INVALID_ARG_TYPE on failing assert(value) under --enable-source-maps (v26 regression)

7 participants

@kimjune01@atlowChemi@idabeck-cpu@nodejs-github-bot@twada@jasnell@legendecas
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

lib: fix ERR_INVALID_ARG_TYPE with --enable-source-maps - #63215

Merged
nodejs-github-bot merged 3 commits into
nodejs:mainfrom
kimjune01:fix/assert-source-maps-regression
Aug 20, 2026
Merged

lib: fix ERR_INVALID_ARG_TYPE with --enable-source-maps#63215
nodejs-github-bot merged 3 commits into
nodejs:mainfrom
kimjune01:fix/assert-source-maps-regression

Conversation

@kimjune01

Copy link
Copy Markdown
Contributor

When --enable-source-maps is enabled but no source map exists for the script (e.g. a plain .mjs file), getErrorSourceLocation() returned undefined. This caused getErrMessage() to return undefined, which made innerOk() pass [undefined] as the message tuple to innerFail(), hitting the ERR_INVALID_ARG_TYPE guard instead of throwing AssertionError.

Fix all code paths in getErrorSourceLocation() that returned bare undefined to fall back to the raw generated source line, matching the behavior when source maps are disabled entirely. Also add a guard for when V8 fails to provide a source line at all.

Includes tests for both .mjs and .cjs files under --enable-source-maps.

Fixes: #63169

@nodejs-github-botnodejs-github-bot added errors Issues and PRs related to JavaScript errors originating in Node.js core. needs-ci PRs that need a full CI run. labels May 9, 2026
@atlowChemiatlowChemi added the source maps Issues and PRs related to source map support. label May 10, 2026
@atlowChemi

Copy link
Copy Markdown
Member

@kimjune01 I think the commit's module should be lib, not assert, as I don't think this changes assert specifically, that is mostly the symptom, not the actual issue, no?

@kimjune01

Copy link
Copy Markdown
ContributorAuthor

Good point — the root cause is in the source map resolution path, not assert itself. I'll update the title.

@kimjune01kimjune01 changed the title assert: fix ERR_INVALID_ARG_TYPE with --enable-source-mapslib: fix ERR_INVALID_ARG_TYPE with --enable-source-mapsMay 10, 2026
@idabeck-cpu

This comment was marked as spam.

@idabeck-cpu

This comment was marked as spam.

@idabeck-cpu

This comment was marked as spam.

@atlowChemi

Copy link
Copy Markdown
Member

Good point — the root cause is in the source map resolution path, not assert itself. I'll update the title.

@kimjune01 please reword the commit as well 🙏🏽
Let me know if any help is needed

@kimjune01
kimjune01force-pushed the fix/assert-source-maps-regression branch from 629761d to bef74ddCompareMay 11, 2026 04:00
@kimjune01

Copy link
Copy Markdown
ContributorAuthor

Done — reworded commit to lib: prefix.

@codecov

codecovBot commented May 24, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 33.33333% with 6 lines in your changes missing coverage. Please review.
✅ Project coverage is 90.12%. Comparing base (d4d35c6) to head (da520ed).
⚠️ Report is 406 commits behind head on main.

Files with missing linesPatch %Lines
lib/internal/errors/error_source.js33.33%6 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #63215 +/- ##
=======================================
Coverage 90.12% 90.12% =======================================
Files 743 743 Lines 242415 242422 +7 Branches 45656 45653 -3 =======================================
+ Hits 218476 218491 +15 
Misses 15438 15438 + Partials 8501 8493 -8 
Files with missing linesCoverage Δ
lib/internal/errors/error_source.js82.55% <33.33%> (+0.73%)⬆️

... and 32 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@atlowChemi

Copy link
Copy Markdown
Member

@kimjune01 the CI failures all seem related to the changes

Comment threadtest/parallel/test-assert-ok-source-maps.js Outdated
@kimjune01
kimjune01force-pushed the fix/assert-source-maps-regression branch from 6eddc82 to 4b39cd1CompareMay 26, 2026 23:46
@kimjune01

Copy link
Copy Markdown
ContributorAuthor

Rebased onto current main and fixed the two lint failures:

  • Dropped the non-ASCII em-dash from the comments (lint-js-and-md)
  • Added the DCO Signed-off-by (lint-commit-message)

The earlier build failures looked unrelated to this lib/ change; should be clean on the fresh run.

@kimjune01
kimjune01force-pushed the fix/assert-source-maps-regression branch from 4b39cd1 to 6a0b05fCompareMay 26, 2026 23:49
Comment threadtest/parallel/test-assert-ok-source-maps.js Outdated
@kimjune01

Copy link
Copy Markdown
ContributorAuthor

Done. Moved both cases into test-node-output-sourcemaps.mjs as snapshot fixtures under source-map/output/ with a // Flags: --enable-source-maps directive; dropped the standalone test.

@atlowChemiatlowChemi added the request-ci Add this label to start a Jenkins CI on a PR. label Jun 28, 2026
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Jun 28, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@legendecaslegendecas added request-ci Add this label to start a Jenkins CI on a PR. author ready PRs with CI started, the required approvals, and no outstanding review comments. labels Jul 15, 2026
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Jul 15, 2026
@nodejs-github-bot

This comment was marked as outdated.

@nodejs-github-bot

This comment was marked as outdated.

@nodejs-github-bot

This comment was marked as outdated.

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

Signed-off-by: June Kim <kimjune01@gmail.com>
Fold the .mjs and .cjs --enable-source-maps cases from the standalone
test-assert-ok-source-maps.js into the existing snapshot output test,
following the setup in test-node-output-sourcemaps.mjs as requested in
review. The fixtures live under test/fixtures/source-map/output/ with a
`// Flags: --enable-source-maps` directive and assert AssertionError
output via snapshots instead of bespoke spawnSync assertions.
Refs: nodejs#63169
Signed-off-by: June Kim <kimjune01@gmail.com>
The literal first argument to assert() is intentional in these
regression fixtures (the .snapshot files pin the exact source line and
column), so disable the rule inline rather than rewriting the call.
@kimjune01
kimjune01force-pushed the fix/assert-source-maps-regression branch from b15e1c6 to da520edCompareJuly 26, 2026 02:53
@kimjune01

Copy link
Copy Markdown
ContributorAuthor

Rebased onto main. Could someone run CI?

@atlowChemiatlowChemi added the request-ci Add this label to start a Jenkins CI on a PR. label Jul 26, 2026
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Jul 26, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@legendecaslegendecas added the request-ci Add this label to start a Jenkins CI on a PR. label Aug 19, 2026
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Aug 19, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@legendecaslegendecas added commit-queue PRs queued for automated landing through the Commit Queue. commit-queue-squash PRs the Commit Queue should land as one squashed commit. labels Aug 20, 2026
@nodejs-github-bot
nodejs-github-bot merged commit b5d37cd into nodejs:mainAug 20, 2026
88 of 89 checks passed
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

Landed in b5d37cd

@nodejs-github-botnodejs-github-bot removed the commit-queue PRs queued for automated landing through the Commit Queue. label Aug 20, 2026
aduh95 pushed a commit that referenced this pull request Aug 25, 2026
Signed-off-by: June Kim <kimjune01@gmail.com>
PR-URL: #63215Fixes: #63169
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
aduh95 pushed a commit that referenced this pull request Aug 25, 2026
Signed-off-by: June Kim <kimjune01@gmail.com>
PR-URL: #63215Fixes: #63169
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

author readyPRs with CI started, the required approvals, and no outstanding review comments.commit-queue-squashPRs the Commit Queue should land as one squashed commit.errorsIssues and PRs related to JavaScript errors originating in Node.js core.needs-ciPRs that need a full CI run.source mapsIssues and PRs related to source map support.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

assert: ERR_INVALID_ARG_TYPE on failing assert(value) under --enable-source-maps (v26 regression)

7 participants

@kimjune01@atlowChemi@idabeck-cpu@nodejs-github-bot@twada@jasnell@legendecas
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

lib: fix ERR_INVALID_ARG_TYPE with --enable-source-maps - #63215

Merged
nodejs-github-bot merged 3 commits into
nodejs:mainfrom
kimjune01:fix/assert-source-maps-regression
Aug 20, 2026
Merged

lib: fix ERR_INVALID_ARG_TYPE with --enable-source-maps#63215
nodejs-github-bot merged 3 commits into
nodejs:mainfrom
kimjune01:fix/assert-source-maps-regression

Conversation

@kimjune01

Copy link
Copy Markdown
Contributor

When --enable-source-maps is enabled but no source map exists for the script (e.g. a plain .mjs file), getErrorSourceLocation() returned undefined. This caused getErrMessage() to return undefined, which made innerOk() pass [undefined] as the message tuple to innerFail(), hitting the ERR_INVALID_ARG_TYPE guard instead of throwing AssertionError.

Fix all code paths in getErrorSourceLocation() that returned bare undefined to fall back to the raw generated source line, matching the behavior when source maps are disabled entirely. Also add a guard for when V8 fails to provide a source line at all.

Includes tests for both .mjs and .cjs files under --enable-source-maps.

Fixes: #63169

@nodejs-github-botnodejs-github-bot added errors Issues and PRs related to JavaScript errors originating in Node.js core. needs-ci PRs that need a full CI run. labels May 9, 2026
@atlowChemiatlowChemi added the source maps Issues and PRs related to source map support. label May 10, 2026
@atlowChemi

Copy link
Copy Markdown
Member

@kimjune01 I think the commit's module should be lib, not assert, as I don't think this changes assert specifically, that is mostly the symptom, not the actual issue, no?

@kimjune01

Copy link
Copy Markdown
ContributorAuthor

Good point — the root cause is in the source map resolution path, not assert itself. I'll update the title.

@kimjune01kimjune01 changed the title assert: fix ERR_INVALID_ARG_TYPE with --enable-source-mapslib: fix ERR_INVALID_ARG_TYPE with --enable-source-mapsMay 10, 2026
@idabeck-cpu

This comment was marked as spam.

@idabeck-cpu

This comment was marked as spam.

@idabeck-cpu

This comment was marked as spam.

@atlowChemi

Copy link
Copy Markdown
Member

Good point — the root cause is in the source map resolution path, not assert itself. I'll update the title.

@kimjune01 please reword the commit as well 🙏🏽
Let me know if any help is needed

@kimjune01
kimjune01force-pushed the fix/assert-source-maps-regression branch from 629761d to bef74ddCompareMay 11, 2026 04:00
@kimjune01

Copy link
Copy Markdown
ContributorAuthor

Done — reworded commit to lib: prefix.

@codecov

codecovBot commented May 24, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 33.33333% with 6 lines in your changes missing coverage. Please review.
✅ Project coverage is 90.12%. Comparing base (d4d35c6) to head (da520ed).
⚠️ Report is 406 commits behind head on main.

Files with missing linesPatch %Lines
lib/internal/errors/error_source.js33.33%6 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #63215 +/- ##
=======================================
Coverage 90.12% 90.12% =======================================
Files 743 743 Lines 242415 242422 +7 Branches 45656 45653 -3 =======================================
+ Hits 218476 218491 +15 
Misses 15438 15438 + Partials 8501 8493 -8 
Files with missing linesCoverage Δ
lib/internal/errors/error_source.js82.55% <33.33%> (+0.73%)⬆️

... and 32 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@atlowChemi

Copy link
Copy Markdown
Member

@kimjune01 the CI failures all seem related to the changes

Comment threadtest/parallel/test-assert-ok-source-maps.js Outdated
@kimjune01
kimjune01force-pushed the fix/assert-source-maps-regression branch from 6eddc82 to 4b39cd1CompareMay 26, 2026 23:46
@kimjune01

Copy link
Copy Markdown
ContributorAuthor

Rebased onto current main and fixed the two lint failures:

  • Dropped the non-ASCII em-dash from the comments (lint-js-and-md)
  • Added the DCO Signed-off-by (lint-commit-message)

The earlier build failures looked unrelated to this lib/ change; should be clean on the fresh run.

@kimjune01
kimjune01force-pushed the fix/assert-source-maps-regression branch from 4b39cd1 to 6a0b05fCompareMay 26, 2026 23:49
Comment threadtest/parallel/test-assert-ok-source-maps.js Outdated
@kimjune01

Copy link
Copy Markdown
ContributorAuthor

Done. Moved both cases into test-node-output-sourcemaps.mjs as snapshot fixtures under source-map/output/ with a // Flags: --enable-source-maps directive; dropped the standalone test.

@atlowChemiatlowChemi added the request-ci Add this label to start a Jenkins CI on a PR. label Jun 28, 2026
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Jun 28, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@legendecaslegendecas added request-ci Add this label to start a Jenkins CI on a PR. author ready PRs with CI started, the required approvals, and no outstanding review comments. labels Jul 15, 2026
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Jul 15, 2026
@nodejs-github-bot

This comment was marked as outdated.

@nodejs-github-bot

This comment was marked as outdated.

@nodejs-github-bot

This comment was marked as outdated.

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

Signed-off-by: June Kim <kimjune01@gmail.com>
Fold the .mjs and .cjs --enable-source-maps cases from the standalone
test-assert-ok-source-maps.js into the existing snapshot output test,
following the setup in test-node-output-sourcemaps.mjs as requested in
review. The fixtures live under test/fixtures/source-map/output/ with a
`// Flags: --enable-source-maps` directive and assert AssertionError
output via snapshots instead of bespoke spawnSync assertions.
Refs: nodejs#63169
Signed-off-by: June Kim <kimjune01@gmail.com>
The literal first argument to assert() is intentional in these
regression fixtures (the .snapshot files pin the exact source line and
column), so disable the rule inline rather than rewriting the call.
@kimjune01
kimjune01force-pushed the fix/assert-source-maps-regression branch from b15e1c6 to da520edCompareJuly 26, 2026 02:53
@kimjune01

Copy link
Copy Markdown
ContributorAuthor

Rebased onto main. Could someone run CI?

@atlowChemiatlowChemi added the request-ci Add this label to start a Jenkins CI on a PR. label Jul 26, 2026
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Jul 26, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@legendecaslegendecas added the request-ci Add this label to start a Jenkins CI on a PR. label Aug 19, 2026
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Aug 19, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@legendecaslegendecas added commit-queue PRs queued for automated landing through the Commit Queue. commit-queue-squash PRs the Commit Queue should land as one squashed commit. labels Aug 20, 2026
@nodejs-github-bot
nodejs-github-bot merged commit b5d37cd into nodejs:mainAug 20, 2026
88 of 89 checks passed
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

Landed in b5d37cd

@nodejs-github-botnodejs-github-bot removed the commit-queue PRs queued for automated landing through the Commit Queue. label Aug 20, 2026
aduh95 pushed a commit that referenced this pull request Aug 25, 2026
Signed-off-by: June Kim <kimjune01@gmail.com>
PR-URL: #63215Fixes: #63169
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
aduh95 pushed a commit that referenced this pull request Aug 25, 2026
Signed-off-by: June Kim <kimjune01@gmail.com>
PR-URL: #63215Fixes: #63169
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

author readyPRs with CI started, the required approvals, and no outstanding review comments.commit-queue-squashPRs the Commit Queue should land as one squashed commit.errorsIssues and PRs related to JavaScript errors originating in Node.js core.needs-ciPRs that need a full CI run.source mapsIssues and PRs related to source map support.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

assert: ERR_INVALID_ARG_TYPE on failing assert(value) under --enable-source-maps (v26 regression)

7 participants

@kimjune01@atlowChemi@idabeck-cpu@nodejs-github-bot@twada@jasnell@legendecas
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

lib: fix ERR_INVALID_ARG_TYPE with --enable-source-maps - #63215

Merged
nodejs-github-bot merged 3 commits into
nodejs:mainfrom
kimjune01:fix/assert-source-maps-regression
Aug 20, 2026
Merged

lib: fix ERR_INVALID_ARG_TYPE with --enable-source-maps#63215
nodejs-github-bot merged 3 commits into
nodejs:mainfrom
kimjune01:fix/assert-source-maps-regression

Conversation

@kimjune01

Copy link
Copy Markdown
Contributor

When --enable-source-maps is enabled but no source map exists for the script (e.g. a plain .mjs file), getErrorSourceLocation() returned undefined. This caused getErrMessage() to return undefined, which made innerOk() pass [undefined] as the message tuple to innerFail(), hitting the ERR_INVALID_ARG_TYPE guard instead of throwing AssertionError.

Fix all code paths in getErrorSourceLocation() that returned bare undefined to fall back to the raw generated source line, matching the behavior when source maps are disabled entirely. Also add a guard for when V8 fails to provide a source line at all.

Includes tests for both .mjs and .cjs files under --enable-source-maps.

Fixes: #63169

@nodejs-github-botnodejs-github-bot added errors Issues and PRs related to JavaScript errors originating in Node.js core. needs-ci PRs that need a full CI run. labels May 9, 2026
@atlowChemiatlowChemi added the source maps Issues and PRs related to source map support. label May 10, 2026
@atlowChemi

Copy link
Copy Markdown
Member

@kimjune01 I think the commit's module should be lib, not assert, as I don't think this changes assert specifically, that is mostly the symptom, not the actual issue, no?

@kimjune01

Copy link
Copy Markdown
ContributorAuthor

Good point — the root cause is in the source map resolution path, not assert itself. I'll update the title.

@kimjune01kimjune01 changed the title assert: fix ERR_INVALID_ARG_TYPE with --enable-source-mapslib: fix ERR_INVALID_ARG_TYPE with --enable-source-mapsMay 10, 2026
@idabeck-cpu

This comment was marked as spam.

@idabeck-cpu

This comment was marked as spam.

@idabeck-cpu

This comment was marked as spam.

@atlowChemi

Copy link
Copy Markdown
Member

Good point — the root cause is in the source map resolution path, not assert itself. I'll update the title.

@kimjune01 please reword the commit as well 🙏🏽
Let me know if any help is needed

@kimjune01
kimjune01force-pushed the fix/assert-source-maps-regression branch from 629761d to bef74ddCompareMay 11, 2026 04:00
@kimjune01

Copy link
Copy Markdown
ContributorAuthor

Done — reworded commit to lib: prefix.

@codecov

codecovBot commented May 24, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 33.33333% with 6 lines in your changes missing coverage. Please review.
✅ Project coverage is 90.12%. Comparing base (d4d35c6) to head (da520ed).
⚠️ Report is 406 commits behind head on main.

Files with missing linesPatch %Lines
lib/internal/errors/error_source.js33.33%6 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #63215 +/- ##
=======================================
Coverage 90.12% 90.12% =======================================
Files 743 743 Lines 242415 242422 +7 Branches 45656 45653 -3 =======================================
+ Hits 218476 218491 +15 
Misses 15438 15438 + Partials 8501 8493 -8 
Files with missing linesCoverage Δ
lib/internal/errors/error_source.js82.55% <33.33%> (+0.73%)⬆️

... and 32 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@atlowChemi

Copy link
Copy Markdown
Member

@kimjune01 the CI failures all seem related to the changes

Comment threadtest/parallel/test-assert-ok-source-maps.js Outdated
@kimjune01
kimjune01force-pushed the fix/assert-source-maps-regression branch from 6eddc82 to 4b39cd1CompareMay 26, 2026 23:46
@kimjune01

Copy link
Copy Markdown
ContributorAuthor

Rebased onto current main and fixed the two lint failures:

  • Dropped the non-ASCII em-dash from the comments (lint-js-and-md)
  • Added the DCO Signed-off-by (lint-commit-message)

The earlier build failures looked unrelated to this lib/ change; should be clean on the fresh run.

@kimjune01
kimjune01force-pushed the fix/assert-source-maps-regression branch from 4b39cd1 to 6a0b05fCompareMay 26, 2026 23:49
Comment threadtest/parallel/test-assert-ok-source-maps.js Outdated
@kimjune01

Copy link
Copy Markdown
ContributorAuthor

Done. Moved both cases into test-node-output-sourcemaps.mjs as snapshot fixtures under source-map/output/ with a // Flags: --enable-source-maps directive; dropped the standalone test.

@atlowChemiatlowChemi added the request-ci Add this label to start a Jenkins CI on a PR. label Jun 28, 2026
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Jun 28, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@legendecaslegendecas added request-ci Add this label to start a Jenkins CI on a PR. author ready PRs with CI started, the required approvals, and no outstanding review comments. labels Jul 15, 2026
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Jul 15, 2026
@nodejs-github-bot

This comment was marked as outdated.

@nodejs-github-bot

This comment was marked as outdated.

@nodejs-github-bot

This comment was marked as outdated.

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

Signed-off-by: June Kim <kimjune01@gmail.com>
Fold the .mjs and .cjs --enable-source-maps cases from the standalone
test-assert-ok-source-maps.js into the existing snapshot output test,
following the setup in test-node-output-sourcemaps.mjs as requested in
review. The fixtures live under test/fixtures/source-map/output/ with a
`// Flags: --enable-source-maps` directive and assert AssertionError
output via snapshots instead of bespoke spawnSync assertions.
Refs: nodejs#63169
Signed-off-by: June Kim <kimjune01@gmail.com>
The literal first argument to assert() is intentional in these
regression fixtures (the .snapshot files pin the exact source line and
column), so disable the rule inline rather than rewriting the call.
@kimjune01
kimjune01force-pushed the fix/assert-source-maps-regression branch from b15e1c6 to da520edCompareJuly 26, 2026 02:53
@kimjune01

Copy link
Copy Markdown
ContributorAuthor

Rebased onto main. Could someone run CI?

@atlowChemiatlowChemi added the request-ci Add this label to start a Jenkins CI on a PR. label Jul 26, 2026
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Jul 26, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@legendecaslegendecas added the request-ci Add this label to start a Jenkins CI on a PR. label Aug 19, 2026
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Aug 19, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@legendecaslegendecas added commit-queue PRs queued for automated landing through the Commit Queue. commit-queue-squash PRs the Commit Queue should land as one squashed commit. labels Aug 20, 2026
@nodejs-github-bot
nodejs-github-bot merged commit b5d37cd into nodejs:mainAug 20, 2026
88 of 89 checks passed
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

Landed in b5d37cd

@nodejs-github-botnodejs-github-bot removed the commit-queue PRs queued for automated landing through the Commit Queue. label Aug 20, 2026
aduh95 pushed a commit that referenced this pull request Aug 25, 2026
Signed-off-by: June Kim <kimjune01@gmail.com>
PR-URL: #63215Fixes: #63169
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
aduh95 pushed a commit that referenced this pull request Aug 25, 2026
Signed-off-by: June Kim <kimjune01@gmail.com>
PR-URL: #63215Fixes: #63169
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

author readyPRs with CI started, the required approvals, and no outstanding review comments.commit-queue-squashPRs the Commit Queue should land as one squashed commit.errorsIssues and PRs related to JavaScript errors originating in Node.js core.needs-ciPRs that need a full CI run.source mapsIssues and PRs related to source map support.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

assert: ERR_INVALID_ARG_TYPE on failing assert(value) under --enable-source-maps (v26 regression)

7 participants

@kimjune01@atlowChemi@idabeck-cpu@nodejs-github-bot@twada@jasnell@legendecas
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

lib: fix ERR_INVALID_ARG_TYPE with --enable-source-maps - #63215

Merged
nodejs-github-bot merged 3 commits into
nodejs:mainfrom
kimjune01:fix/assert-source-maps-regression
Aug 20, 2026
Merged

lib: fix ERR_INVALID_ARG_TYPE with --enable-source-maps#63215
nodejs-github-bot merged 3 commits into
nodejs:mainfrom
kimjune01:fix/assert-source-maps-regression

Conversation

@kimjune01

Copy link
Copy Markdown
Contributor

When --enable-source-maps is enabled but no source map exists for the script (e.g. a plain .mjs file), getErrorSourceLocation() returned undefined. This caused getErrMessage() to return undefined, which made innerOk() pass [undefined] as the message tuple to innerFail(), hitting the ERR_INVALID_ARG_TYPE guard instead of throwing AssertionError.

Fix all code paths in getErrorSourceLocation() that returned bare undefined to fall back to the raw generated source line, matching the behavior when source maps are disabled entirely. Also add a guard for when V8 fails to provide a source line at all.

Includes tests for both .mjs and .cjs files under --enable-source-maps.

Fixes: #63169

@nodejs-github-botnodejs-github-bot added errors Issues and PRs related to JavaScript errors originating in Node.js core. needs-ci PRs that need a full CI run. labels May 9, 2026
@atlowChemiatlowChemi added the source maps Issues and PRs related to source map support. label May 10, 2026
@atlowChemi

Copy link
Copy Markdown
Member

@kimjune01 I think the commit's module should be lib, not assert, as I don't think this changes assert specifically, that is mostly the symptom, not the actual issue, no?

@kimjune01

Copy link
Copy Markdown
ContributorAuthor

Good point — the root cause is in the source map resolution path, not assert itself. I'll update the title.

@kimjune01kimjune01 changed the title assert: fix ERR_INVALID_ARG_TYPE with --enable-source-mapslib: fix ERR_INVALID_ARG_TYPE with --enable-source-mapsMay 10, 2026
@idabeck-cpu

This comment was marked as spam.

@idabeck-cpu

This comment was marked as spam.

@idabeck-cpu

This comment was marked as spam.

@atlowChemi

Copy link
Copy Markdown
Member

Good point — the root cause is in the source map resolution path, not assert itself. I'll update the title.

@kimjune01 please reword the commit as well 🙏🏽
Let me know if any help is needed

@kimjune01
kimjune01force-pushed the fix/assert-source-maps-regression branch from 629761d to bef74ddCompareMay 11, 2026 04:00
@kimjune01

Copy link
Copy Markdown
ContributorAuthor

Done — reworded commit to lib: prefix.

@codecov

codecovBot commented May 24, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 33.33333% with 6 lines in your changes missing coverage. Please review.
✅ Project coverage is 90.12%. Comparing base (d4d35c6) to head (da520ed).
⚠️ Report is 406 commits behind head on main.

Files with missing linesPatch %Lines
lib/internal/errors/error_source.js33.33%6 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #63215 +/- ##
=======================================
Coverage 90.12% 90.12% =======================================
Files 743 743 Lines 242415 242422 +7 Branches 45656 45653 -3 =======================================
+ Hits 218476 218491 +15 
Misses 15438 15438 + Partials 8501 8493 -8 
Files with missing linesCoverage Δ
lib/internal/errors/error_source.js82.55% <33.33%> (+0.73%)⬆️

... and 32 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@atlowChemi

Copy link
Copy Markdown
Member

@kimjune01 the CI failures all seem related to the changes

Comment threadtest/parallel/test-assert-ok-source-maps.js Outdated
@kimjune01
kimjune01force-pushed the fix/assert-source-maps-regression branch from 6eddc82 to 4b39cd1CompareMay 26, 2026 23:46
@kimjune01

Copy link
Copy Markdown
ContributorAuthor

Rebased onto current main and fixed the two lint failures:

  • Dropped the non-ASCII em-dash from the comments (lint-js-and-md)
  • Added the DCO Signed-off-by (lint-commit-message)

The earlier build failures looked unrelated to this lib/ change; should be clean on the fresh run.

@kimjune01
kimjune01force-pushed the fix/assert-source-maps-regression branch from 4b39cd1 to 6a0b05fCompareMay 26, 2026 23:49
Comment threadtest/parallel/test-assert-ok-source-maps.js Outdated
@kimjune01

Copy link
Copy Markdown
ContributorAuthor

Done. Moved both cases into test-node-output-sourcemaps.mjs as snapshot fixtures under source-map/output/ with a // Flags: --enable-source-maps directive; dropped the standalone test.

@atlowChemiatlowChemi added the request-ci Add this label to start a Jenkins CI on a PR. label Jun 28, 2026
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Jun 28, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@legendecaslegendecas added request-ci Add this label to start a Jenkins CI on a PR. author ready PRs with CI started, the required approvals, and no outstanding review comments. labels Jul 15, 2026
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Jul 15, 2026
@nodejs-github-bot

This comment was marked as outdated.

@nodejs-github-bot

This comment was marked as outdated.

@nodejs-github-bot

This comment was marked as outdated.

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

Signed-off-by: June Kim <kimjune01@gmail.com>
Fold the .mjs and .cjs --enable-source-maps cases from the standalone
test-assert-ok-source-maps.js into the existing snapshot output test,
following the setup in test-node-output-sourcemaps.mjs as requested in
review. The fixtures live under test/fixtures/source-map/output/ with a
`// Flags: --enable-source-maps` directive and assert AssertionError
output via snapshots instead of bespoke spawnSync assertions.
Refs: nodejs#63169
Signed-off-by: June Kim <kimjune01@gmail.com>
The literal first argument to assert() is intentional in these
regression fixtures (the .snapshot files pin the exact source line and
column), so disable the rule inline rather than rewriting the call.
@kimjune01
kimjune01force-pushed the fix/assert-source-maps-regression branch from b15e1c6 to da520edCompareJuly 26, 2026 02:53
@kimjune01

Copy link
Copy Markdown
ContributorAuthor

Rebased onto main. Could someone run CI?

@atlowChemiatlowChemi added the request-ci Add this label to start a Jenkins CI on a PR. label Jul 26, 2026
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Jul 26, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@legendecaslegendecas added the request-ci Add this label to start a Jenkins CI on a PR. label Aug 19, 2026
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Aug 19, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@legendecaslegendecas added commit-queue PRs queued for automated landing through the Commit Queue. commit-queue-squash PRs the Commit Queue should land as one squashed commit. labels Aug 20, 2026
@nodejs-github-bot
nodejs-github-bot merged commit b5d37cd into nodejs:mainAug 20, 2026
88 of 89 checks passed
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

Landed in b5d37cd

@nodejs-github-botnodejs-github-bot removed the commit-queue PRs queued for automated landing through the Commit Queue. label Aug 20, 2026
aduh95 pushed a commit that referenced this pull request Aug 25, 2026
Signed-off-by: June Kim <kimjune01@gmail.com>
PR-URL: #63215Fixes: #63169
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
aduh95 pushed a commit that referenced this pull request Aug 25, 2026
Signed-off-by: June Kim <kimjune01@gmail.com>
PR-URL: #63215Fixes: #63169
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

author readyPRs with CI started, the required approvals, and no outstanding review comments.commit-queue-squashPRs the Commit Queue should land as one squashed commit.errorsIssues and PRs related to JavaScript errors originating in Node.js core.needs-ciPRs that need a full CI run.source mapsIssues and PRs related to source map support.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

assert: ERR_INVALID_ARG_TYPE on failing assert(value) under --enable-source-maps (v26 regression)

7 participants

@kimjune01@atlowChemi@idabeck-cpu@nodejs-github-bot@twada@jasnell@legendecas
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

lib: fix ERR_INVALID_ARG_TYPE with --enable-source-maps - #63215

Merged
nodejs-github-bot merged 3 commits into
nodejs:mainfrom
kimjune01:fix/assert-source-maps-regression
Aug 20, 2026
Merged

lib: fix ERR_INVALID_ARG_TYPE with --enable-source-maps#63215
nodejs-github-bot merged 3 commits into
nodejs:mainfrom
kimjune01:fix/assert-source-maps-regression

Conversation

@kimjune01

Copy link
Copy Markdown
Contributor

When --enable-source-maps is enabled but no source map exists for the script (e.g. a plain .mjs file), getErrorSourceLocation() returned undefined. This caused getErrMessage() to return undefined, which made innerOk() pass [undefined] as the message tuple to innerFail(), hitting the ERR_INVALID_ARG_TYPE guard instead of throwing AssertionError.

Fix all code paths in getErrorSourceLocation() that returned bare undefined to fall back to the raw generated source line, matching the behavior when source maps are disabled entirely. Also add a guard for when V8 fails to provide a source line at all.

Includes tests for both .mjs and .cjs files under --enable-source-maps.

Fixes: #63169

@nodejs-github-botnodejs-github-bot added errors Issues and PRs related to JavaScript errors originating in Node.js core. needs-ci PRs that need a full CI run. labels May 9, 2026
@atlowChemiatlowChemi added the source maps Issues and PRs related to source map support. label May 10, 2026
@atlowChemi

Copy link
Copy Markdown
Member

@kimjune01 I think the commit's module should be lib, not assert, as I don't think this changes assert specifically, that is mostly the symptom, not the actual issue, no?

@kimjune01

Copy link
Copy Markdown
ContributorAuthor

Good point — the root cause is in the source map resolution path, not assert itself. I'll update the title.

@kimjune01kimjune01 changed the title assert: fix ERR_INVALID_ARG_TYPE with --enable-source-mapslib: fix ERR_INVALID_ARG_TYPE with --enable-source-mapsMay 10, 2026
@idabeck-cpu

This comment was marked as spam.

@idabeck-cpu

This comment was marked as spam.

@idabeck-cpu

This comment was marked as spam.

@atlowChemi

Copy link
Copy Markdown
Member

Good point — the root cause is in the source map resolution path, not assert itself. I'll update the title.

@kimjune01 please reword the commit as well 🙏🏽
Let me know if any help is needed

@kimjune01
kimjune01force-pushed the fix/assert-source-maps-regression branch from 629761d to bef74ddCompareMay 11, 2026 04:00
@kimjune01

Copy link
Copy Markdown
ContributorAuthor

Done — reworded commit to lib: prefix.

@codecov

codecovBot commented May 24, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 33.33333% with 6 lines in your changes missing coverage. Please review.
✅ Project coverage is 90.12%. Comparing base (d4d35c6) to head (da520ed).
⚠️ Report is 406 commits behind head on main.

Files with missing linesPatch %Lines
lib/internal/errors/error_source.js33.33%6 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #63215 +/- ##
=======================================
Coverage 90.12% 90.12% =======================================
Files 743 743 Lines 242415 242422 +7 Branches 45656 45653 -3 =======================================
+ Hits 218476 218491 +15 
Misses 15438 15438 + Partials 8501 8493 -8 
Files with missing linesCoverage Δ
lib/internal/errors/error_source.js82.55% <33.33%> (+0.73%)⬆️

... and 32 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@atlowChemi

Copy link
Copy Markdown
Member

@kimjune01 the CI failures all seem related to the changes

Comment threadtest/parallel/test-assert-ok-source-maps.js Outdated
@kimjune01
kimjune01force-pushed the fix/assert-source-maps-regression branch from 6eddc82 to 4b39cd1CompareMay 26, 2026 23:46
@kimjune01

Copy link
Copy Markdown
ContributorAuthor

Rebased onto current main and fixed the two lint failures:

  • Dropped the non-ASCII em-dash from the comments (lint-js-and-md)
  • Added the DCO Signed-off-by (lint-commit-message)

The earlier build failures looked unrelated to this lib/ change; should be clean on the fresh run.

@kimjune01
kimjune01force-pushed the fix/assert-source-maps-regression branch from 4b39cd1 to 6a0b05fCompareMay 26, 2026 23:49
Comment threadtest/parallel/test-assert-ok-source-maps.js Outdated
@kimjune01

Copy link
Copy Markdown
ContributorAuthor

Done. Moved both cases into test-node-output-sourcemaps.mjs as snapshot fixtures under source-map/output/ with a // Flags: --enable-source-maps directive; dropped the standalone test.

@atlowChemiatlowChemi added the request-ci Add this label to start a Jenkins CI on a PR. label Jun 28, 2026
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Jun 28, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@legendecaslegendecas added request-ci Add this label to start a Jenkins CI on a PR. author ready PRs with CI started, the required approvals, and no outstanding review comments. labels Jul 15, 2026
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Jul 15, 2026
@nodejs-github-bot

This comment was marked as outdated.

@nodejs-github-bot

This comment was marked as outdated.

@nodejs-github-bot

This comment was marked as outdated.

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

Signed-off-by: June Kim <kimjune01@gmail.com>
Fold the .mjs and .cjs --enable-source-maps cases from the standalone
test-assert-ok-source-maps.js into the existing snapshot output test,
following the setup in test-node-output-sourcemaps.mjs as requested in
review. The fixtures live under test/fixtures/source-map/output/ with a
`// Flags: --enable-source-maps` directive and assert AssertionError
output via snapshots instead of bespoke spawnSync assertions.
Refs: nodejs#63169
Signed-off-by: June Kim <kimjune01@gmail.com>
The literal first argument to assert() is intentional in these
regression fixtures (the .snapshot files pin the exact source line and
column), so disable the rule inline rather than rewriting the call.
@kimjune01
kimjune01force-pushed the fix/assert-source-maps-regression branch from b15e1c6 to da520edCompareJuly 26, 2026 02:53
@kimjune01

Copy link
Copy Markdown
ContributorAuthor

Rebased onto main. Could someone run CI?

@atlowChemiatlowChemi added the request-ci Add this label to start a Jenkins CI on a PR. label Jul 26, 2026
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Jul 26, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@legendecaslegendecas added the request-ci Add this label to start a Jenkins CI on a PR. label Aug 19, 2026
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Aug 19, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@legendecaslegendecas added commit-queue PRs queued for automated landing through the Commit Queue. commit-queue-squash PRs the Commit Queue should land as one squashed commit. labels Aug 20, 2026
@nodejs-github-bot
nodejs-github-bot merged commit b5d37cd into nodejs:mainAug 20, 2026
88 of 89 checks passed
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

Landed in b5d37cd

@nodejs-github-botnodejs-github-bot removed the commit-queue PRs queued for automated landing through the Commit Queue. label Aug 20, 2026
aduh95 pushed a commit that referenced this pull request Aug 25, 2026
Signed-off-by: June Kim <kimjune01@gmail.com>
PR-URL: #63215Fixes: #63169
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
aduh95 pushed a commit that referenced this pull request Aug 25, 2026
Signed-off-by: June Kim <kimjune01@gmail.com>
PR-URL: #63215Fixes: #63169
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

author readyPRs with CI started, the required approvals, and no outstanding review comments.commit-queue-squashPRs the Commit Queue should land as one squashed commit.errorsIssues and PRs related to JavaScript errors originating in Node.js core.needs-ciPRs that need a full CI run.source mapsIssues and PRs related to source map support.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

assert: ERR_INVALID_ARG_TYPE on failing assert(value) under --enable-source-maps (v26 regression)

7 participants

@kimjune01@atlowChemi@idabeck-cpu@nodejs-github-bot@twada@jasnell@legendecas
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

lib: fix ERR_INVALID_ARG_TYPE with --enable-source-maps - #63215

Merged
nodejs-github-bot merged 3 commits into
nodejs:mainfrom
kimjune01:fix/assert-source-maps-regression
Aug 20, 2026
Merged

lib: fix ERR_INVALID_ARG_TYPE with --enable-source-maps#63215
nodejs-github-bot merged 3 commits into
nodejs:mainfrom
kimjune01:fix/assert-source-maps-regression

Conversation

@kimjune01

Copy link
Copy Markdown
Contributor

When --enable-source-maps is enabled but no source map exists for the script (e.g. a plain .mjs file), getErrorSourceLocation() returned undefined. This caused getErrMessage() to return undefined, which made innerOk() pass [undefined] as the message tuple to innerFail(), hitting the ERR_INVALID_ARG_TYPE guard instead of throwing AssertionError.

Fix all code paths in getErrorSourceLocation() that returned bare undefined to fall back to the raw generated source line, matching the behavior when source maps are disabled entirely. Also add a guard for when V8 fails to provide a source line at all.

Includes tests for both .mjs and .cjs files under --enable-source-maps.

Fixes: #63169

@nodejs-github-botnodejs-github-bot added errors Issues and PRs related to JavaScript errors originating in Node.js core. needs-ci PRs that need a full CI run. labels May 9, 2026
@atlowChemiatlowChemi added the source maps Issues and PRs related to source map support. label May 10, 2026
@atlowChemi

Copy link
Copy Markdown
Member

@kimjune01 I think the commit's module should be lib, not assert, as I don't think this changes assert specifically, that is mostly the symptom, not the actual issue, no?

@kimjune01

Copy link
Copy Markdown
ContributorAuthor

Good point — the root cause is in the source map resolution path, not assert itself. I'll update the title.

@kimjune01kimjune01 changed the title assert: fix ERR_INVALID_ARG_TYPE with --enable-source-mapslib: fix ERR_INVALID_ARG_TYPE with --enable-source-mapsMay 10, 2026
@idabeck-cpu

This comment was marked as spam.

@idabeck-cpu

This comment was marked as spam.

@idabeck-cpu

This comment was marked as spam.

@atlowChemi

Copy link
Copy Markdown
Member

Good point — the root cause is in the source map resolution path, not assert itself. I'll update the title.

@kimjune01 please reword the commit as well 🙏🏽
Let me know if any help is needed

@kimjune01
kimjune01force-pushed the fix/assert-source-maps-regression branch from 629761d to bef74ddCompareMay 11, 2026 04:00
@kimjune01

Copy link
Copy Markdown
ContributorAuthor

Done — reworded commit to lib: prefix.

@codecov

codecovBot commented May 24, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 33.33333% with 6 lines in your changes missing coverage. Please review.
✅ Project coverage is 90.12%. Comparing base (d4d35c6) to head (da520ed).
⚠️ Report is 406 commits behind head on main.

Files with missing linesPatch %Lines
lib/internal/errors/error_source.js33.33%6 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #63215 +/- ##
=======================================
Coverage 90.12% 90.12% =======================================
Files 743 743 Lines 242415 242422 +7 Branches 45656 45653 -3 =======================================
+ Hits 218476 218491 +15 
Misses 15438 15438 + Partials 8501 8493 -8 
Files with missing linesCoverage Δ
lib/internal/errors/error_source.js82.55% <33.33%> (+0.73%)⬆️

... and 32 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@atlowChemi

Copy link
Copy Markdown
Member

@kimjune01 the CI failures all seem related to the changes

Comment threadtest/parallel/test-assert-ok-source-maps.js Outdated
@kimjune01
kimjune01force-pushed the fix/assert-source-maps-regression branch from 6eddc82 to 4b39cd1CompareMay 26, 2026 23:46
@kimjune01

Copy link
Copy Markdown
ContributorAuthor

Rebased onto current main and fixed the two lint failures:

  • Dropped the non-ASCII em-dash from the comments (lint-js-and-md)
  • Added the DCO Signed-off-by (lint-commit-message)

The earlier build failures looked unrelated to this lib/ change; should be clean on the fresh run.

@kimjune01
kimjune01force-pushed the fix/assert-source-maps-regression branch from 4b39cd1 to 6a0b05fCompareMay 26, 2026 23:49
Comment threadtest/parallel/test-assert-ok-source-maps.js Outdated
@kimjune01

Copy link
Copy Markdown
ContributorAuthor

Done. Moved both cases into test-node-output-sourcemaps.mjs as snapshot fixtures under source-map/output/ with a // Flags: --enable-source-maps directive; dropped the standalone test.

@atlowChemiatlowChemi added the request-ci Add this label to start a Jenkins CI on a PR. label Jun 28, 2026
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Jun 28, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@legendecaslegendecas added request-ci Add this label to start a Jenkins CI on a PR. author ready PRs with CI started, the required approvals, and no outstanding review comments. labels Jul 15, 2026
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Jul 15, 2026
@nodejs-github-bot

This comment was marked as outdated.

@nodejs-github-bot

This comment was marked as outdated.

@nodejs-github-bot

This comment was marked as outdated.

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

Signed-off-by: June Kim <kimjune01@gmail.com>
Fold the .mjs and .cjs --enable-source-maps cases from the standalone
test-assert-ok-source-maps.js into the existing snapshot output test,
following the setup in test-node-output-sourcemaps.mjs as requested in
review. The fixtures live under test/fixtures/source-map/output/ with a
`// Flags: --enable-source-maps` directive and assert AssertionError
output via snapshots instead of bespoke spawnSync assertions.
Refs: nodejs#63169
Signed-off-by: June Kim <kimjune01@gmail.com>
The literal first argument to assert() is intentional in these
regression fixtures (the .snapshot files pin the exact source line and
column), so disable the rule inline rather than rewriting the call.
@kimjune01
kimjune01force-pushed the fix/assert-source-maps-regression branch from b15e1c6 to da520edCompareJuly 26, 2026 02:53
@kimjune01

Copy link
Copy Markdown
ContributorAuthor

Rebased onto main. Could someone run CI?

@atlowChemiatlowChemi added the request-ci Add this label to start a Jenkins CI on a PR. label Jul 26, 2026
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Jul 26, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@legendecaslegendecas added the request-ci Add this label to start a Jenkins CI on a PR. label Aug 19, 2026
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Aug 19, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@legendecaslegendecas added commit-queue PRs queued for automated landing through the Commit Queue. commit-queue-squash PRs the Commit Queue should land as one squashed commit. labels Aug 20, 2026
@nodejs-github-bot
nodejs-github-bot merged commit b5d37cd into nodejs:mainAug 20, 2026
88 of 89 checks passed
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

Landed in b5d37cd

@nodejs-github-botnodejs-github-bot removed the commit-queue PRs queued for automated landing through the Commit Queue. label Aug 20, 2026
aduh95 pushed a commit that referenced this pull request Aug 25, 2026
Signed-off-by: June Kim <kimjune01@gmail.com>
PR-URL: #63215Fixes: #63169
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
aduh95 pushed a commit that referenced this pull request Aug 25, 2026
Signed-off-by: June Kim <kimjune01@gmail.com>
PR-URL: #63215Fixes: #63169
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

author readyPRs with CI started, the required approvals, and no outstanding review comments.commit-queue-squashPRs the Commit Queue should land as one squashed commit.errorsIssues and PRs related to JavaScript errors originating in Node.js core.needs-ciPRs that need a full CI run.source mapsIssues and PRs related to source map support.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

assert: ERR_INVALID_ARG_TYPE on failing assert(value) under --enable-source-maps (v26 regression)

7 participants

@kimjune01@atlowChemi@idabeck-cpu@nodejs-github-bot@twada@jasnell@legendecas