The JavaScript exceptions thrown by JSON.parse()
occur when string failed
to be parsed as JSON.
Message
SyntaxError: JSON.parse: unterminated string literal SyntaxError: JSON.parse: bad control character in string literal SyntaxError: JSON.parse: bad character in string literal SyntaxError: JSON.parse: bad Unicode escape SyntaxError: JSON.parse: bad escape character SyntaxError: JSON.parse: unterminated string SyntaxError: JSON.parse: no number after minus sign SyntaxError: JSON.parse: unexpected non-digit SyntaxError: JSON.parse: missing digits after decimal point SyntaxError: JSON.parse: unterminated fractional number SyntaxError: JSON.parse: missing digits after exponent indicator SyntaxError: JSON.parse: missing digits after exponent sign SyntaxError: JSON.parse: exponent part is missing a number SyntaxError: JSON.parse: unexpected end of data SyntaxError: JSON.parse: unexpected keyword SyntaxError: JSON.parse: unexpected character SyntaxError: JSON.parse: end of data while reading object contents SyntaxError: JSON.parse: expected property name or '}' SyntaxError: JSON.parse: end of data when ',' or ']' was expected SyntaxError: JSON.parse: expected ',' or ']' after array element SyntaxError: JSON.parse: end of data when property name was expected SyntaxError: JSON.parse: expected double-quoted property name SyntaxError: JSON.parse: end of data after property name when ':' was expected SyntaxError: JSON.parse: expected ':' after property name in object SyntaxError: JSON.parse: end of data after property value in object SyntaxError: JSON.parse: expected ',' or '}' after property value in object SyntaxError: JSON.parse: expected ',' or '}' after property-value pair in object literal SyntaxError: JSON.parse: property names must be double-quoted strings SyntaxError: JSON.parse: expected property name or '}' SyntaxError: JSON.parse: unexpected character SyntaxError: JSON.parse: unexpected non-whitespace character after JSON data
Error type
What went wrong?
JSON.parse()
parses a string as JSON. This string has to be valid JSON
and will throw this error if incorrect syntax was encountered.
Examples
JSON.parse() does not allow trailing commas
Both lines will throw a SyntaxError:
JSON.parse("[1, 2, 3, 4,]");
JSON.parse('{"foo": 1,}');
// SyntaxError JSON.parse: unexpected character
// at line 1 column 14 of the JSON data
Omit the trailing commas to parse the JSON correctly:
JSON.parse("[1, 2, 3, 4]");
JSON.parse('{"foo": 1}');
Property names must be double-quoted strings
You cannot use single-quotes around properties, like ‘foo’.
JSON.parse("{'foo': 1}");
// SyntaxError: JSON.parse: expected property name or '}'
// at line 1 column 2 of the JSON data
Instead write «foo»:
JSON.parse('{"foo": 1}');
Leading zeros and decimal points
You cannot use leading zeros, like 01, and decimal points must be followed by at least
one digit.
JSON.parse('{"foo": 01}');
// SyntaxError: JSON.parse: expected ',' or '}' after property value
// in object at line 1 column 2 of the JSON data
JSON.parse('{"foo": 1.}');
// SyntaxError: JSON.parse: unterminated fractional number
// at line 1 column 2 of the JSON data
Instead write just 1 without a zero and use at least one digit after a decimal point:
JSON.parse('{"foo": 1}');
JSON.parse('{"foo": 1.0}');
See also
In this post, we will explore – How To Fix – “Parsing Error: Unexpected Token” in React.
error Parsing error: Unexpected token
ESLint Parsing Error: Unexpected token {
Parsing error: Unexpected token =>
SyntaxError: Unexpected token (
Such “Unexpected token” signify a common behavioural problem – somewhere in your code a specific construct was supplied, but the system expected something completely different (based on defined rulescustoms). This could be due to a typo mistake, missing something in the code etc. Also could be dev environment and ESLint parsing styles are not compatible owing to the changes for various or upgraded versions.
if( aicp_can_see_ads() ) {
}
Before we try to fix, Let’s do some primitive checks to pinpoint some of the symptoms.
Primitive Check:
- What version of React are you using ?
- Have you considered and cross-checked that you have correctly “imported” everything ?
- Are you able to compile your code using Babel ?
- Have you tried babel-eslint parser – the newer name is @babel/eslint-parser
- Does it work in the Browser ?
Once you have been through all the above pointers, try the below options.
Try the latest babel eslint and make sure you follow the compatibility matrix.
if( aicp_can_see_ads() ) {
}
ESLint | babel-eslint |
---|---|
4.x | >= 6.x |
3.x | >= 6.x |
2.x | >= 6.x |
1.x | >= 5.x |
Node version preferably should be 8+.
- Do the install. The “x.x” & “y” below has to be substituted appropriately as per the above table.
npm install [email protected]x.x [email protected]y --save-dev
OR
yarn add [email protected]x.x [email protected]y -D
if( aicp_can_see_ads() ) {
}
- Go to the .eslintrc (or .eslintrc.json) config file and make the below changes.
Also check what value you have in “.babelrc”.
{ "parser": "babel-eslint", }
If above doesn’t work, you could also try,
{ "parser: "@babel/eslint-parser" }
- If applicable, go to your package.json file and check the below.
"scripts": { "lint": "eslint" },
- You might have two files in your system. There are different versions of ecmaScript with the same name,
- .eslintrc.js -> es6: true – which was released on June 2015
- .eslintrc.json -> “ecmaVersion”: 2017 – which is equivalent to es8
If the wrong ecmaScript is being picked up in your case, you can try removing the “.eslintrc.js” file (so as to avoid the conflict) and see if that helps to solve the error.
if( aicp_can_see_ads() ) {
}
- You can also try changing the ecmaVersion in the .eslintrc.json file.
"parserOptions": { // Required for certain syntax usages "ecmaVersion": 2020 },
You could also try other values like 2017, 2018 instead of 2020
You can use one of the below ecmaVersion value to specify what version of ECMAScript syntax to use-
if( aicp_can_see_ads() ) {
}
-
- 3
- 5 (default)
- 6 (also used as 2015)
- 7 (also used as 2016)
- 8 (also used as 2017)
- 9 (also used as 2018)
- 10 (also used as 2019)
- 11 (also used as 2020)
- 12 (also used as 2021)
Hope this helps to solve the error.
Other Interesting Reads –
-
How to Send Large Messages in Kafka ?
-
Fix Spark Error – “org.apache.spark.SparkException: Failed to get broadcast_0_piece0 of broadcast_0”
-
How to Handle Bad or Corrupt records in Apache Spark ?
-
How to use Broadcast Variable in Spark ?
-
How to log an error in Python ?
-
How to Code Custom Exception Handling in Python ?
-
How to Handle Errors and Exceptions in Python ?
-
How To Fix – “Ssl: Certificate_Verify_Failed” Error in Python ?
-
How to Send Large Messages in Kafka ?
-
Fix Spark Error – “org.apache.spark.SparkException: Failed to get broadcast_0_piece0 of broadcast_0”
-
How to Handle Bad or Corrupt records in Apache Spark ?
-
How to use Broadcast Variable in Spark ?
-
Best Practices for Dependency Problem in Spark
-
Sample Code – Spark Structured Streaming vs Spark Streaming
-
Sample Code for PySpark Cassandra Application
-
How to Enable UTF-8 in Python ?
-
How to log an error in Python ?
-
Sample Python Code To Read & Write Various File Formats (JSON, XML, CSV, Text)
-
How to Handle Errors and Exceptions in Python ?
-
How to Handle Bad or Corrupt records in Apache Spark ?
-
How To Fix – Partitions Being Revoked and Reassigned issue in Kafka ?
-
What Are The Most Important Metrics to Monitor in Kafka ?
-
How To Connect Local Python to Kafka on AWS EC2 ?
-
How to Send Large Messages in Kafka ?
-
Fix Spark Error – “org.apache.spark.SparkException: Failed to get broadcast_0_piece0 of broadcast_0”
if( aicp_can_see_ads() ) {
}
parsing error: unexpected token javascript ,parsing error : unexpected token servicenow ,parsing error: unexpected token typescript ,parsing error: unexpected token vue ,parsing error: unexpected token node js ,parsing error: unexpected token salesforce ,parsing error: unexpected token import ,parsing error: unexpected token eslint typescript , , ,error parsing error: unexpected token eslint ,error parsing error: unexpected token => ,error parsing error: unexpected token javascript ,error parsing error: unexpected token => firebase ,parsing error: unexpected token node js ,how do i fix unexpected token parsing error ,parsing error: unexpected token import ,parsing error unexpected token in servicenow , , ,parsing error: invalid ecmaversion 2021 ,parsing error: invalid ecmaversion 13 ,eslint ecmaversion ,parsing error: ecmaversion must be a number. ,ecmaversion 2022 ,ecmaversion 12 ,ecmaversion'': latest ,eslint ecmaversion latest ,parsing error: unexpected token ,parsing error unexpected token ,parsing error unexpected token expected ,parsing error unexpected token javascript ,parsing error unexpected token function ,parsing error unexpected token node js ,parsing error unexpected token import ,parsing error unexpected token in servicenow ,parsing error unexpected token expected typescript ,parsing error unexpected token axios ,parsing error unexpected token await ,parsing error unexpected token assert eslint ,parsing error unexpected token aws lambda ,parsing error unexpected token angular ,parsing error unexpected token as.eslint-plugin-vue ,parsing error unexpected token axios eslint ,parsing error unexpected token async eslint ,parsing error unexpected token brackets ,error parsing json unexpected token bracket. (15360) ,error parsing json unexpected token bracket ,json parse error unexpected identifier bad ,babel parse error unexpected token ,what is parsing error unexpected token ,what causes parsing error ,what does parsing error mean ,parsing error unexpected token const ,parsing error unexpected token constructor ,parsing error unexpected token colon ,parsing error unexpected token css ,parsing error unexpected token catch servicenow ,parsing error unexpected token. a constructor method accessor or property was expected ,parsing error unexpected token . optional chaining ,parsing error unexpected token try catch ,parsing error unexpected token declare global ,parsing error unexpected token doctype html ,parsing error unexpected token db ,parsing error unexpected token dreamweaver ,parsing error unexpected token. did you mean ' ' or &rbrace ,parsing error unexpected token doctype ,parsing error unexpected token dynamodb ,parsing error unexpected token data ,parsing error unexpected token eslint ,parsing error unexpected token expected vue ,parsing error unexpected token else ,parsing error unexpected token expected map ,parsing error unexpected token expected in react js ,parsing error unexpected token eslint vue ,parsing error unexpected token fetch ,parsing error unexpected token = firebase ,parsing error unexpected token (fatal) ,parsing error unexpected token expected from ,parsing error unexpected token = arrow function ,parsing error unexpected token react function ,parsing error unexpected token = eslint arrow function ,parsing error unexpected token glitch ,parsing error unexpected token global ,parse error syntax error unexpected token global ,parsing error unexpected token . did you mean or ,godot parser error unexpected token ,error in parse unexpected symbol ,parsing error unexpected token html ,parsing error unexpected token head ,json parse error unexpected identifier https ,json parse error unexpected token pizza hut ,parse error syntax error unexpected identifier header ,json parse error unexpected token pizza hut app ,parse errors in imported module unexpected token head ,parsing error unexpected token in react js ,parsing error unexpected token in javascript ,parsing error unexpected token if ,parsing error unexpected token in eslint ,parsing error unexpected token import react lazy ,parsing error unexpected token jsx ,parsing error unexpected token json ,parsing error unexpected token javascript servicenow ,parsing error unexpected token vue js ,parsing error unexpected token expected javascript ,eslint parsing error unexpected token json ,parsing error unexpected token expected keyof ,parser error unexpected token expected identifier keyword or string ,js_parse_error syntaxerror unexpected token keyword «const» ,parsing error unexpected token lambda ,parsing error unexpected token lint ,parsing error unexpected token let ,parsing error unexpected token lwc ,parsing error unexpected token expected lwc ,parser error unexpected token lexer error ,parser error unexpected token lexer error unterminated quote ,parsing error unexpected token module ,parse error syntax error unexpected token match ,parse error syntax error unexpected token match expecting ,parse error syntax error unexpected token match expecting variable ,parse error syntax error unexpected identifier mysqli_query ,parsing error unexpected token namespace ,parsing error unexpected token name ,parsing error unexpected token node ,parsing error unexpected token new ,parsing error unexpected token npm ,parser error unexpected token '=' ngmodel ,parsing error unexpected token react native ,parsing error unexpected token optional chaining ,parsing error unexpected token of ,parsing error unexpected token spread operator ,eslint parsing error unexpected token in typescript cast operator as ,json parse error unexpected token o ,json parse error unexpected identifier object ,parser error unexpected token expected identifier or keyword ,json parse error unexpected identifier ok ,parsing error unexpected token prettier/prettier ,parsing error unexpected token promise ,parsing error unexpected token private ,parsing error unexpected token promise eslint ,parsing error unexpected token python ,parsing error unexpected token .eslint-plugin-vue ,parsing error unexpected token expected package.json ,eslint parsing error unexpected token expected ,parsing error unexpected token question mark ,parsing error unexpected token react ,parsing error unexpected token return eslint ,parsing error unexpected token request ,parsing error unexpected token expected react ,parsing error unexpected token expected react js ,parsing error unexpected token servicenow ,parsing error unexpected token salesforce ,parsing error unexpected token source ,parsing error unexpected token s3 ,parsing error unexpected token standard ,parsing error unexpected token scss ,parsing error unexpected token switch ,parsing error unexpected token typescript ,parsing error unexpected token type ,parsing error unexpected token throw ,parsing error unexpected token tampermonkey ,parsing error unexpected token ts ,parsing error unexpected token template ,vue parsing error unexpected token template ,parsing error unexpected token useeffect ,parsing error unexpected token user ,parsing error unexpected token ui5 ,json parse error unexpected token u ,json.parse error unexpected token u in json at position 0 ,parsing error unexpected token in sap ui5 ,json parse error unexpected identifier undefined ,parse error syntax error unexpected token use ,parsing error unexpected token vue ,parsing error unexpected token var ,parsing error unexpected token vscode ,parser error unexpected token var at column 1 in ,parse error unexpected identifier vhdl ,parsing error unexpected token import vue ,parsing error unexpected token eslint vscode ,parsing error unexpected token wix ,parse error syntax error unexpected token while ,parse error syntax error unexpected token while php ,webpack parsing error unexpected token ,wsendpoints parse error unexpected token u in json at position 0 in undefined ,webstorm eslint parsing error unexpected token ,terraform error unexpected token while parsing list ident ,error parsing content unexpected token xpath statement was expected ,how do i fix xml parsing error ,parsing error unexpected token. did you mean ' ' ,parsing error unexpected token expected in react ,parsing error unexpected token expected eslint ,parsing error unexpected token expected eslint typescript ,parsing error unexpected token expected as ,parsing error unexpected token expected as typescript ,parsing error unexpected token expected as string ,parsing error unexpected token expected arrow function ,parsing error unexpected token expected an identifier ,parser error unexpected token expected identifier or keyword at column ,parse error syntax error unexpected token as expecting ,create react app parsing error unexpected token expected ,abstract class parsing error unexpected token expected ,declare parsing error unexpected token expected ,parsing error unexpected token expected extends ,parsing error unexpected token expected eslint prettier/prettier ,error parsing error unexpected token expected ,error parsing error unexpected token expected vue ,enum parsing error unexpected token expected ,parsing error unexpected token. a constructor method accessor or property was expected.eslint ,parsing error unexpected token expected in typescript ,parsing error unexpected identifier expected the token ,parse error unexpected identifier app-id' expected value ,parsing error unexpected token expected json ,js parsing error unexpected token expected ,vuecompilererror error parsing javascript expression unexpected token expected ,syntaxerror error parsing javascript expression unexpected token expected ,parsing error line 1 unexpected token expected ,parse error unexpected identifier in label matching expected string ,parsing error unexpected token expected react native ,rego_parse_error unexpected token expected n or or ,json parse error unexpected token (start_object) expected value_string ,json parse error unexpected token (start_object) expected start_array ,parsing error unexpected token expected prettier/prettier ,parsing error unexpected token expected react typescript ,parsing error unexpected token expected reactjs ,react-scripts parsing error unexpected token expected ,parsing error unexpected token expected servicenow ,parsing error unexpected token expected the token ,parser error unexpected token expected identifier or keyword at the end of the expression ,vuejs parsing error unexpected token expected ,parse error syntax error unexpected '(' expecting variable (t_variable) ,parsing error unexpected token function javascript ,parsing error unexpected token react js ,parsing error unexpected token expected typescript as ,parsing javascript code ,error parsing error unexpected token javascript ,error parsing javascript expression unexpected token ,vue compiler error error parsing javascript expression unexpected token ,parsing error unexpected token in node js ,parsing error unexpected keyword 'this' react ,org.openqa.selenium.javascriptexception javascript error unexpected token ' ' ,parsing error unexpected token var in javascript ,parsing xml file in javascript ,parse error syntax error unexpected token function php ,json parse error unexpected identifier function ,parse error syntax error unexpected token function expecting ) ,error parsing error unexpected token = firebase functions ,parsing error unexpected token function async ,parsing error unexpected token function eslint ,parse error syntax error unexpected token expecting function or const ,parsing error unexpected token for ,async function parsing error unexpected token function ,parse error syntax error unexpected token function in ,error while parsing package ,parse error syntax error unexpected token function ,parse jwt token node js ,parsing xml in node js , , ,a fatal parsing error occurred parsing error unexpected token ,angular eslint parsing error unexpected token ,angular parsing error unexpected token ,arrow function parsing error unexpected token = ,as any parsing error unexpected token expected ,as parsing error unexpected token expected ,await parsing error unexpected token ,aws lambda parsing error unexpected token ,babel parse error unexpected token ,brackets parsing error unexpected token ,class parsing error unexpected token = ,const parsing error unexpected token ,create react app parsing error unexpected token expected ,css parsing error unexpected token ,declare global parsing error unexpected token ,declare namespace parsing error unexpected token ,declare parsing error unexpected token expected ,doctype html parsing error unexpected token ,error handling rpc response error parsing json syntaxerror unexpected token ,error in parse unexpected symbol ,error parsing content unexpected token xpath statement was expected ,error parsing error unexpected token expected ,error parsing error unexpected token javascript ,error parsing error unexpected token vue ,error parsing file unexpected token ,error parsing json response 'unexpected token ' ''. logged in ,error parsing json unexpected token brace. (15360) ,error parsing json unexpected token bracket ,error parsing json unexpected token bracket. (15360) ,error parsing string unexpected token end of file at position 0 ,error parsing time ,error unexpected token in json at position 1 while parsing near ' ,error while parsing json - unexpected token ,error while parsing json - unexpected token in json ,error while parsing json - unexpected token in json at position ,error) parsing sql unexpected token near * * in the following ,eslint html parsing error unexpected token ,eslint optional chaining parsing error unexpected token ,eslint parsing error unexpected token ,eslint parsing error unexpected token = arrow function ,eslint parsing error unexpected token expected ,eslint parsing error unexpected token function ,eslint parsing error unexpected token import ,eslint parsing error unexpected token in typescript cast operator as ,eslint parsing error unexpected token json ,eslint parsing error unexpected token spread operator ,eslint typescript parsing error unexpected token ,firebase parsing error unexpected token = ,godot parser error unexpected token ,how do i fix unexpected token in json error ,how do i fix unexpected token parsing error ,how do i fix xml parsing error ,how to fix parsing error unexpected token ,interface parsing error unexpected token ,java parsing error unexpected token ,javascript parsing error unexpected token ,javascript parsing error unexpected token expected ,js parsing error unexpected token expected ,js_parse_error syntaxerror unexpected token keyword «const» ,json parse error unexpected identifier bad ,json parse error unexpected identifier https ,json parse error unexpected identifier object ,json parse error unexpected identifier ok ,json parse error unexpected identifier tunnel ,json parse error unexpected identifier undefined ,json parse error unexpected token o ,json parse error unexpected token pizza hut ,json parse error unexpected token pizza hut app ,json parse error unexpected token u ,json parsing error unexpected token ,json.parse error unexpected token u in json at position 0 ,json_parsing_error unexpected token end of file at position 0 ,json_parsing_error unexpected token end of file at position 0 in java ,jsx parsing error unexpected token ,keyof parsing error unexpected token expected ,lambda parsing error unexpected token ,lint parsing error unexpected token ,nodejs parsing error unexpected token ,npm install error parsing json unexpected token ,npm parsing error unexpected token ,nuxt parsing error unexpected token ,optional chaining parsing error unexpected token ,package.json error while parsing json - unexpected token in json at position ,parse error syntax error unexpected identifier header ,parse error syntax error unexpected identifier mysql_connect ,parse error syntax error unexpected identifier mysqli_query ,parse error syntax error unexpected token foreach ,parse error syntax error unexpected token global ,parse error syntax error unexpected token match ,parse error syntax error unexpected token match expecting ,parse error syntax error unexpected token match expecting variable ,parse error syntax error unexpected token new ,parse error syntax error unexpected token php ,parse error syntax error unexpected token try ,parse error syntax error unexpected token use ,parse error syntax error unexpected token use php ,parse error syntax error unexpected token var ,parse error syntax error unexpected token while ,parse error syntax error unexpected token while php ,parse error unexpected identifier in label matching expected string ,parse error unexpected identifier vhdl ,parse errors in imported module unexpected token head ,parser error unexpected token '=' at column 2 in 1=$event ,parser error unexpected token '=' ngmodel ,parser error unexpected token = at column 1 in =$event ,parser error unexpected token expected identifier keyword or string ,parser error unexpected token expected identifier or keyword ,parser error unexpected token lexer error ,parser error unexpected token lexer error unexpected character ,parser error unexpected token lexer error unterminated quote ,parser error unexpected token var at column 1 in ,parsing error line 1 unexpected token ,parsing error line 1 unexpected token expected ,parsing error unexpected token ,parsing error unexpected token (fatal) ,parsing error unexpected token . did you mean or ,parsing error unexpected token . optional chaining ,parsing error unexpected token .eslint-plugin-vue ,parsing error unexpected token 1 doctype html ,parsing error unexpected token = ,parsing error unexpected token = (null) ,parsing error unexpected token = arrow function ,parsing error unexpected token = class properties ,parsing error unexpected token = eslint arrow function ,parsing error unexpected token = firebase ,parsing error unexpected token angular ,parsing error unexpected token as.eslint-plugin-vue ,parsing error unexpected token assert eslint ,parsing error unexpected token async eslint ,parsing error unexpected token await ,parsing error unexpected token aws lambda ,parsing error unexpected token axios ,parsing error unexpected token axios eslint ,parsing error unexpected token brackets ,parsing error unexpected token catch servicenow ,parsing error unexpected token colon ,parsing error unexpected token const ,parsing error unexpected token constructor ,parsing error unexpected token css ,parsing error unexpected token data ,parsing error unexpected token db ,parsing error unexpected token declare ,parsing error unexpected token declare global ,parsing error unexpected token doctype ,parsing error unexpected token doctype html ,parsing error unexpected token dot ,parsing error unexpected token dreamweaver ,parsing error unexpected token dynamodb ,parsing error unexpected token else ,parsing error unexpected token eslint ,parsing error unexpected token eslint arrow function ,parsing error unexpected token eslint html ,parsing error unexpected token eslint vscode ,parsing error unexpected token eslint vue ,parsing error unexpected token expected ,parsing error unexpected token expected arrow function ,parsing error unexpected token expected as ,parsing error unexpected token expected from ,parsing error unexpected token expected in react ,parsing error unexpected token expected in react js ,parsing error unexpected token expected javascript ,parsing error unexpected token expected json ,parsing error unexpected token expected keyof ,parsing error unexpected token expected lwc ,parsing error unexpected token expected map ,parsing error unexpected token expected package.json ,parsing error unexpected token expected react ,parsing error unexpected token expected react js ,parsing error unexpected token expected react native ,parsing error unexpected token expected react typescript ,parsing error unexpected token expected reactjs ,parsing error unexpected token expected the token ,parsing error unexpected token expected typescript ,parsing error unexpected token expected vue ,parsing error unexpected token fetch ,parsing error unexpected token for ,parsing error unexpected token function ,parsing error unexpected token function javascript ,parsing error unexpected token glitch ,parsing error unexpected token global ,parsing error unexpected token head ,parsing error unexpected token html ,parsing error unexpected token if ,parsing error unexpected token import ,parsing error unexpected token import at ,parsing error unexpected token import react lazy ,parsing error unexpected token import vue ,parsing error unexpected token in eslint ,parsing error unexpected token in javascript ,parsing error unexpected token in lambda ,parsing error unexpected token in node js ,parsing error unexpected token in react js ,parsing error unexpected token in sap ui5 ,parsing error unexpected token in servicenow ,parsing error unexpected token javascript ,parsing error unexpected token javascript servicenow ,parsing error unexpected token json ,parsing error unexpected token jsx ,parsing error unexpected token lambda ,parsing error unexpected token let ,parsing error unexpected token lint ,parsing error unexpected token lwc ,parsing error unexpected token module ,parsing error unexpected token name ,parsing error unexpected token namespace ,parsing error unexpected token new ,parsing error unexpected token node ,parsing error unexpected token node js ,parsing error unexpected token npm ,parsing error unexpected token of ,parsing error unexpected token optional chaining ,parsing error unexpected token prettier/prettier ,parsing error unexpected token prettier/prettier doctype ,parsing error unexpected token private ,parsing error unexpected token promise ,parsing error unexpected token promise eslint ,parsing error unexpected token python ,parsing error unexpected token question mark ,parsing error unexpected token react ,parsing error unexpected token react function ,parsing error unexpected token react native ,parsing error unexpected token request ,parsing error unexpected token return eslint ,parsing error unexpected token s3 ,parsing error unexpected token salesforce ,parsing error unexpected token sapui5 ,parsing error unexpected token script ,parsing error unexpected token scss ,parsing error unexpected token servicenow ,parsing error unexpected token source ,parsing error unexpected token spread operator ,parsing error unexpected token standard ,parsing error unexpected token switch ,parsing error unexpected token tampermonkey ,parsing error unexpected token template ,parsing error unexpected token throw ,parsing error unexpected token try catch ,parsing error unexpected token ts ,parsing error unexpected token type ,parsing error unexpected token typescript ,parsing error unexpected token ui5 ,parsing error unexpected token useeffect ,parsing error unexpected token user ,parsing error unexpected token var ,parsing error unexpected token vscode ,parsing error unexpected token vue ,parsing error unexpected token vue js ,parsing error unexpected token wix ,parsing error unexpected token zara ,parsing error unexpected token zero ,parsing error unexpected token zerodha ,parsing error unexpected token zlib ,parsing error unexpected token zone.js ,parsing error unexpected token. a constructor method accessor or property was expected ,parsing error unexpected token. did you mean ' ' ,parsing error unexpected token. did you mean ' ' or ,parsing error unexpected token. did you mean ' ' or &rbrace ,prettier html parsing error unexpected token ,react function parsing error unexpected token ,react js parsing error unexpected token expected ,react lazy parsing error unexpected token import ,react map parsing error unexpected token ,react parsing error unexpected token ,react parsing error unexpected token expected ,react typescript parsing error unexpected token expected ,react-scripts parsing error unexpected token expected ,servicenow parsing error unexpected token ,source-reader.karma-typescript error parsing code unexpected token ,syntaxerror json parse error unexpected identifier method ,syntaxerror json parse error unexpected token u ,tampermonkey parsing error unexpected token ,task failed while parsing with following error unexpected token in json at position ,terraform error unexpected token while parsing list ident ,there was an error parsing json data unexpected token in json at position 0 ,try catch parsing error unexpected token ,ts parsing error unexpected token ,typescript parsing error unexpected token expected ,typescript parsing error unexpected token static ,unknown parsing error unexpected token ,useeffect parsing error unexpected token ,vite parsing error unexpected token import ,vscode eslint parsing error unexpected token ,vscode parsing error unexpected token ,vue 3 parsing error unexpected token ,vue cli parsing error unexpected token ,vue js parsing error unexpected token ,vue parsing error unexpected token ,vue parsing error unexpected token expected ,vue parsing error unexpected token import ,vue parsing error unexpected token template ,vue typescript parsing error unexpected token ,webpack parsing error unexpected token ,webstorm eslint parsing error unexpected token ,what causes parsing error ,what does parsing error mean ,what is parsing error unexpected token ,wix parsing error unexpected token ,wsendpoints parse error unexpected token u in json at position 0 in undefined
if( aicp_can_see_ads() ) {
}
A refresher on the purpose and syntax of JSON, as well as a detailed exploration of the JSON Parse SyntaxError in JavaScript.
Traveling deftly through to the next item in our JavaScript Error Handling series, today we’re taking a hard look at the JSON Parse
error. The JSON Parse
error, as the name implies, surfaces when using the JSON.parse()
method that fails to pass valid JSON as an argument.
In this article, we’ll dig deeper into where JSON Parse
errors sit in the JavaScript error hierarchy, as well as when it might appear and how to handle it when it does. Let’s get started!
The Technical Rundown
- All JavaScript error objects are descendants of the
Error
object, or an inherited object therein. - The
SyntaxError
object is inherited from theError
object. - The
JSON Parse
error is a specific type ofSyntaxError
object.
When Should You Use It?
While most developers are probably intimately familiar with JSON and the proper formatting syntax it requires, it doesn’t hurt to briefly review it ourselves, to better understand some common causes of the JSON Parse
error in JavaScript.
JavaScript Object Notation
, better known as JSON
, is a human-readable text format, commonly used to transfer data across the web. The basic structure of JSON consists of objects
, which are sets of string: value
pairs surrounded by curly braces:
{
"first": "Jane",
"last": "Doe"
}
An array
is a set of values
, surrounded by brackets:
[
"Jane",
"Doe"
]
A value
can be a string
, number
, object
, array
, boolean
, or null
.
That’s really all there is to the JSON syntax. Since values
can be other objects
or arrays
, JSON can be infinitely nested (theoretically).
In JavaScript, when passing JSON to the JSON.parse()
method, the method expects properly formatted JSON as the first argument. When it detects invalid JSON, it throws a JSON Parse
error.
For example, one of the most common typos or syntax errors in JSON is adding an extra comma separator at the end of an array
or object
value
set. Notice in the first few examples above, we only use a comma to literally separate values
from one another. Here we’ll try adding an extra, or «hanging», comma after our final value
:
var printError = function(error, explicit) {
console.log(`[${explicit ? 'EXPLICIT' : 'INEXPLICIT'}] ${error.name}: ${error.message}`);
}
try {
var json = `
{
«first»: «Jane»,
«last»: «Doe»,
}
`
console.log(JSON.parse(json));
} catch (e) {
if (e instanceof SyntaxError) {
printError(e, true);
} else {
printError(e, false);
}
}
Note: We’re using the backtick (`
) string syntax to initialize our JSON, which just allows us to present it in a more readable form. Functionally, this is identical to a string that is contained on a single line.
As expected, our extraneous comma at the end throws a JSON Parse
error:
[EXPLICIT] SyntaxError: Unexpected token } in JSON at position 107
In this case, it’s telling us the }
token is unexpected, because the comma at the end informs JSON that there should be a third value
to follow.
Another common syntax issue is neglecting to surround string
values within string: value
pairs with quotations ("
). Many other language syntaxes use similar key: value
pairings to indicate named arguments and the like, so developers may find it easy to forget that JSON requires the string to be explicitly indicated using quotation marks:
var printError = function(error, explicit) {
console.log(`[${explicit ? 'EXPLICIT' : 'INEXPLICIT'}] ${error.name}: ${error.message}`);
}
try {
var json = `
{
«first»: «Jane»,
last: «Doe»,
}
`
console.log(JSON.parse(json));
} catch (e) {
if (e instanceof SyntaxError) {
printError(e, true);
} else {
printError(e, false);
}
}
Here we forgot quotations around the "last"
key string
, so we get another JSON Parse
error:
[EXPLICIT] SyntaxError: Unexpected token l in JSON at position 76
A few examples are probably sufficient to see how the JSON Parse
error comes about, but as it so happens, there are dozens of possible versions of this error, depending on how JSON was improperly formatted. Here’s the full list:
JSON Parse Error Messages |
---|
SyntaxError: JSON.parse: unterminated string literal |
SyntaxError: JSON.parse: bad control character in string literal |
SyntaxError: JSON.parse: bad character in string literal |
SyntaxError: JSON.parse: bad Unicode escape |
SyntaxError: JSON.parse: bad escape character |
SyntaxError: JSON.parse: unterminated string |
SyntaxError: JSON.parse: no number after minus sign |
SyntaxError: JSON.parse: unexpected non-digit |
SyntaxError: JSON.parse: missing digits after decimal point |
SyntaxError: JSON.parse: unterminated fractional number |
SyntaxError: JSON.parse: missing digits after exponent indicator |
SyntaxError: JSON.parse: missing digits after exponent sign |
SyntaxError: JSON.parse: exponent part is missing a number |
SyntaxError: JSON.parse: unexpected end of data |
SyntaxError: JSON.parse: unexpected keyword |
SyntaxError: JSON.parse: unexpected character |
SyntaxError: JSON.parse: end of data while reading object contents |
SyntaxError: JSON.parse: expected property name or ‘}’ |
SyntaxError: JSON.parse: end of data when ‘,’ or ‘]’ was expected |
SyntaxError: JSON.parse: expected ‘,’ or ‘]’ after array element |
SyntaxError: JSON.parse: end of data when property name was expected |
SyntaxError: JSON.parse: expected double-quoted property name |
SyntaxError: JSON.parse: end of data after property name when ‘:’ was expected |
SyntaxError: JSON.parse: expected ‘:’ after property name in object |
SyntaxError: JSON.parse: end of data after property value in object |
SyntaxError: JSON.parse: expected ‘,’ or ‘}’ after property value in object |
SyntaxError: JSON.parse: expected ‘,’ or ‘}’ after property-value pair in object literal |
SyntaxError: JSON.parse: property names must be double-quoted strings |
SyntaxError: JSON.parse: expected property name or ‘}’ |
SyntaxError: JSON.parse: unexpected character |
SyntaxError: JSON.parse: unexpected non-whitespace character after JSON data |
To dive even deeper into understanding how your applications deal with JavaScript Errors, check out the revolutionary Airbrake JavaScript
error tracking tool for real-time alerts and instantaneous insight into what went wrong with your JavaScript code.
An Easier Way to Find JavaScript Errors
The first way to find a JSON Parse error is to go through your logs, but when you’re dealing with hundreds, if not thousands, of lines of code, it can be difficult to find that one line of broken code. With Airbrake Error and Performance Monitoring, you can skip the logs and go straight to the line of broken code resulting in the JSON Parse error.
Don’t have Airbrake? Create your free Airbrake dev account today!
Note: We published this post in February 2017 and recently updated it in April 2022.
The JavaScript exceptions thrown by JSON.parse()
occur when string failed to be parsed as JSON.
Message
SyntaxError: JSON.parse: unterminated string literal SyntaxError: JSON.parse: bad control character in string literal SyntaxError: JSON.parse: bad character in string literal SyntaxError: JSON.parse: bad Unicode escape SyntaxError: JSON.parse: bad escape character SyntaxError: JSON.parse: unterminated string SyntaxError: JSON.parse: no number after minus sign SyntaxError: JSON.parse: unexpected non-digit SyntaxError: JSON.parse: missing digits after decimal point SyntaxError: JSON.parse: unterminated fractional number SyntaxError: JSON.parse: missing digits after exponent indicator SyntaxError: JSON.parse: missing digits after exponent sign SyntaxError: JSON.parse: exponent part is missing a number SyntaxError: JSON.parse: unexpected end of data SyntaxError: JSON.parse: unexpected keyword SyntaxError: JSON.parse: unexpected character SyntaxError: JSON.parse: end of data while reading object contents SyntaxError: JSON.parse: expected property name or SyntaxError: JSON.parse: end of data when SyntaxError: JSON.parse: expected SyntaxError: JSON.parse: end of data when property name was expected SyntaxError: JSON.parse: expected double-quoted property name SyntaxError: JSON.parse: end of data after property name when SyntaxError: JSON.parse: expected SyntaxError: JSON.parse: end of data after property value in object SyntaxError: JSON.parse: expected SyntaxError: JSON.parse: expected SyntaxError: JSON.parse: property names must be double-quoted strings SyntaxError: JSON.parse: expected property name or SyntaxError: JSON.parse: unexpected character SyntaxError: JSON.parse: unexpected non-whitespace character after JSON data
Error type
What went wrong?
JSON.parse()
parses a string as JSON. This string has to be valid JSON and will throw this error if incorrect syntax was encountered.
Examples
JSON.parse() does not allow trailing commas
Both lines will throw a SyntaxError:
JSON.parse('[1, 2, 3, 4,]'); JSON.parse('{"foo": 1,}');
Omit the trailing commas to parse the JSON correctly:
JSON.parse('[1, 2, 3, 4]'); JSON.parse('{"foo": 1}');
Property names must be double-quoted strings
You cannot use single-quotes around properties, like ‘foo’.
JSON.parse("{'foo': 1}");
Instead write «foo»:
JSON.parse('{"foo": 1}');
Leading zeros and decimal points
You cannot use leading zeros, like 01, and decimal points must be followed by at least one digit.
JSON.parse('{"foo": 01}'); JSON.parse('{"foo": 1.}');
Instead write just 1 without a zero and use at least one digit after a decimal point:
JSON.parse('{"foo": 1}'); JSON.parse('{"foo": 1.0}');
See also
JSON
JSON.parse()
JSON.stringify()
JavaScript
-
TypeError: invalid ‘instanceof’ operand ‘x’
The JavaScript exception «invalid ‘instanceof’ operand» occurs when right-hand side operands operator isn’t used with constructor object, i.e.
-
TypeError: ‘x’ is not iterable
The JavaScript exception «is not iterable» occurs when value which given right-hand side of for…of, argument function such Promise.all TypedArray.from,
-
SyntaxError: Malformed formal parameter
The JavaScript exception «malformed formal parameter» occurs when argument list of Function() constructor call invalid somehow.
-
URIError: malformed URI sequence
The JavaScript exception «malformed URI sequence» occurs when encoding decoding wasn’t successful.
JSON ( JavaScript Object Notation), is widely used format for asynchronous communication between webpage or mobile application to back-end servers. Due to increasing trend in Single Page Application or Mobile Application, popularity of the JSON is extreme.
Why do we get JSON parse error?
Parsing JSON is a very common task in JavaScript. JSON.parse() is a built-in method in JavaScript which is used to parse a JSON string and convert it into a JavaScript object. If the JSON string is invalid, it will throw a SyntaxError.
const json = '{"result":true, "count":42}';
const obj = JSON.parse(json);
console.log(obj.count);
// expected output: 42
console.log(obj.result);
// expected output: true
How to handle JSON parse error?
There are many ways to handle JSON parse error. In this post, I will show you how to handle JSON parse error in JavaScript.
1. Using try-catch block
The most common way to handle JSON parse error is using try-catch block. If the JSON string is valid, it will return a JavaScript object. If the JSON string is invalid, it will throw a SyntaxError.
try {
const json = '{"result":true, "count":42}';
const obj = JSON.parse(json);
console.log(obj.count);
// expected output: 42
console.log(obj.result);
// expected output: true
} catch (e) {
console.log(e);
// expected output: SyntaxError: Unexpected token o in JSON at position 1
}
2. Using if-else block
Another way to handle JSON parse error is using if-else block.
const json = '{"result":true, "count":42}';
const obj = JSON.parse(json);
if (obj instanceof SyntaxError) {
console.log(obj);
// expected output: SyntaxError: Unexpected token o in JSON at position 1
} else {
console.log(obj.count);
// expected output: 42
console.log(obj.result);
// expected output: true
}
3. Using try-catch block with JSON.parse()
The third way to handle JSON parse error is using try-catch block with JSON.parse().
const json = '{"result":true, "count":42}';
const obj = JSON.parse(json, (key, value) => {
try {
return JSON.parse(value);
} catch (e) {
return value;
}
});
console.log(obj.count);
// expected output: 42
console.log(obj.result);
// expected output: true
4. Using try-catch block with JSON.parse() and JSON.stringify()
The fourth way to handle JSON parse error is using try-catch block with JSON.parse() and JSON.stringify(). If the JSON string is valid, it will return a JavaScript object. If the JSON string is invalid, it will return a SyntaxError.
const json = '{"result":true, "count":42}';
const obj = JSON.parse(json, (key, value) => {
try {
return JSON.parse(value);
} catch (e) {
return value;
}
});
const str = JSON.stringify(obj);
console.log(str);
// expected output: {"result":true,"count":42}
It is useful to distinguish between categories of errors in order to quickly
identify and fix them. Each category manifests itself in a different way, and
some strategies may be more useful for certain types of errors.
6.2.1. Stages of JavaScript Execution¶
In order to understand programming errors it is useful to understand the two
stages of code execution.
6.2.1.1. Parsing¶
Before code can be run, it must first be parsed, or validated and prepared for
execution. This is known as the parsing stage, and you can think of it like
the pre-flight check for a plane or space craft.
A lot of detailed, low-level tasks are carried out during this process, but it
is enough for us to understand that parsing verifies the syntax and structure
of the code.
6.2.1.2. Execution¶
Once our code has been parsed, its syntax has been verified and the program is
ready to run. The execution stage is when the actions written into our
program—printing to the console, prompting the user for input, making
calculations, etc.—are actually carried out. You can think of this stage as
the plane taking flight.
6.2.2. Syntax Errors¶
JavaScript can only execute a program if the program is syntactically correct.
Syntax refers to the structure of a language (spoken, programming, or
otherwise) and the rules about that structure. For example, in English, a
sentence must begin with a capital letter and end with appropriate punctuation.
A syntax error is a violation of the formal rules for a given language.
Examples
this sentence contains a syntax error.
So does this one
For most readers of English, a few syntax errors are not a significant problem.
Our brains are often flexible enough to determine the intended meaning of a
sentence even if it contains one or more syntax errors.
Programming languages are not so forgiving. If there is a single syntax error anywhere in your program, JavaScript will display an error message and quit immediately. Since syntax is validated during the parsing stage, syntax errors are the first we see when running a program.
During the first few weeks of your programming career, you will probably spend a lot of time tracking down syntax errors. However, as you gain experience, you will make fewer errors, and you will find your errors faster.
Try It!
Find the syntax errors in the program.
let day = Wednesday; console.log(day; |
repl.it
Question
What syntax errors did you find? What was the specific error message provided by JavaScript in each case?
6.2.3. Runtime Errors¶
The second category consists of runtime errors, so called because they do not appear until you run the program. These errors are also called exceptions because they usually indicate that something exceptional (and bad) has happened.
Runtime errors occur during the execution phase of a program, so we will only encounter them after the syntax of our program is completely correct.
A common runtime error occurs when we try to use a variable that has not been created yet. This can happen if you misspell the name of a variable, as the following example shows.
Example
let firstName = "Jack"; console.log(firstname); |
Console Output
ReferenceError: firstname is not defined at evalmachine.<anonymous>:2:13 at Script.runInContext (vm.js:107:20) at Object.runInContext (vm.js:285:6) at evaluate (/run_dir/repl.js:133:14) at ReadStream.<anonymous> (/run_dir/repl.js:116:5) at ReadStream.emit (events.js:189:13) at addChunk (_stream_readable.js:284:12) at readableAddChunk (_stream_readable.js:265:11) at ReadStream.Readable.push (_stream_readable.js:220:10) at lazyFs.read (internal/fs/streams.js:181:12)
The syntax of our program is correct, but when the program executes, an error occurs at line 2. We attempt to print the value of the variable firstname
, but such a variable does not exist.
6.2.4. Logic Errors¶
The third type of error is the logic error. If there is a logic error in your program, it will run successfully and not generate any error messages. However, the program will not work as intended.
The characteristic of logic errors is that the program you wrote is not the program you wanted. For example, say you want a program to calculate your daily earnings based on your weekly salary. You might try the following:
Example
let weeklyPay = 600; let dailyEarnings = weeklyPay / 7; console.log(dailyEarnings); |
Console Output
The result surprises you because you thought you were making at least $100 per day (you work Monday through Friday). According to this program, though, you are making about $85 per day. The error is a logic one because you divided your weekly pay by 7. It would have been more accurate to divide your weekly pay by 5, since that is how many days a week you come to work.
Identifying logic errors can be tricky because unlike syntax and runtime problems, there are no error messages to help us identify the issue. We must examine the output of the program and work backward to figure out what it is doing wrong.
6.2.5. Check Your Understanding¶
Question
Label each of the following as either a syntax, runtime, or logic error.
-
Trying to use a variable that has not been defined.
-
Leaving off a close parenthesis,
)
, when callingconsole.log
. -
Forgetting to divide by 100 when printing a percentage amount.
Содержание
- Node.js v19.4.0 documentation
- Errors #
- Error propagation and interception #
- Error-first callbacks #
- Class: Error #
- new Error(message[, options]) #
- Error.captureStackTrace(targetObject[, constructorOpt]) #
- Error.stackTraceLimit #
- error.cause #
- error.code #
- error.message #
- error.stack #
- Class: AssertionError #
- Class: RangeError #
- Class: ReferenceError #
- Class: SyntaxError #
- Class: SystemError #
- error.address #
- error.code #
- error.dest #
- error.errno #
- error.info #
- error.message #
- error.path #
- error.port #
- error.syscall #
- Common system errors #
- Class: TypeError #
- Exceptions vs. errors #
- OpenSSL errors #
- error.opensslErrorStack #
- error.function #
- error.library #
- error.reason #
- Node.js error codes #
- ABORT_ERR #
- ERR_AMBIGUOUS_ARGUMENT #
- ERR_ARG_NOT_ITERABLE #
- ERR_ASSERTION #
- ERR_ASSERT_SNAPSHOT_NOT_SUPPORTED #
- ERR_ASYNC_CALLBACK #
- ERR_ASYNC_TYPE #
- ERR_BROTLI_COMPRESSION_FAILED #
- ERR_BROTLI_INVALID_PARAM #
- ERR_BUFFER_CONTEXT_NOT_AVAILABLE #
- ERR_BUFFER_OUT_OF_BOUNDS #
- ERR_BUFFER_TOO_LARGE #
- ERR_CANNOT_WATCH_SIGINT #
- ERR_CHILD_CLOSED_BEFORE_REPLY #
- ERR_CHILD_PROCESS_IPC_REQUIRED #
- ERR_CHILD_PROCESS_STDIO_MAXBUFFER #
- ERR_CLOSED_MESSAGE_PORT #
- ERR_CONSOLE_WRITABLE_STREAM #
- ERR_CONSTRUCT_CALL_INVALID #
- ERR_CONSTRUCT_CALL_REQUIRED #
- ERR_CONTEXT_NOT_INITIALIZED #
- ERR_CRYPTO_CUSTOM_ENGINE_NOT_SUPPORTED #
- ERR_CRYPTO_ECDH_INVALID_FORMAT #
- ERR_CRYPTO_ECDH_INVALID_PUBLIC_KEY #
- ERR_CRYPTO_ENGINE_UNKNOWN #
- ERR_CRYPTO_FIPS_FORCED #
- ERR_CRYPTO_FIPS_UNAVAILABLE #
- ERR_CRYPTO_HASH_FINALIZED #
- ERR_CRYPTO_HASH_UPDATE_FAILED #
- ERR_CRYPTO_INCOMPATIBLE_KEY #
- ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS #
- ERR_CRYPTO_INITIALIZATION_FAILED #
- ERR_CRYPTO_INVALID_AUTH_TAG #
- ERR_CRYPTO_INVALID_COUNTER #
- ERR_CRYPTO_INVALID_CURVE #
- ERR_CRYPTO_INVALID_DIGEST #
- ERR_CRYPTO_INVALID_IV #
- ERR_CRYPTO_INVALID_JWK #
- ERR_CRYPTO_INVALID_KEY_OBJECT_TYPE #
- ERR_CRYPTO_INVALID_KEYLEN #
- ERR_CRYPTO_INVALID_KEYPAIR #
- ERR_CRYPTO_INVALID_KEYTYPE #
- ERR_CRYPTO_INVALID_MESSAGELEN #
- ERR_CRYPTO_INVALID_SCRYPT_PARAMS #
- ERR_CRYPTO_INVALID_STATE #
- ERR_CRYPTO_INVALID_TAG_LENGTH #
- ERR_CRYPTO_JOB_INIT_FAILED #
- ERR_CRYPTO_JWK_UNSUPPORTED_CURVE #
- ERR_CRYPTO_JWK_UNSUPPORTED_KEY_TYPE #
- ERR_CRYPTO_OPERATION_FAILED #
- ERR_CRYPTO_PBKDF2_ERROR #
- ERR_CRYPTO_SCRYPT_INVALID_PARAMETER #
- ERR_CRYPTO_SCRYPT_NOT_SUPPORTED #
- ERR_CRYPTO_SIGN_KEY_REQUIRED #
- ERR_CRYPTO_TIMING_SAFE_EQUAL_LENGTH #
- ERR_CRYPTO_UNKNOWN_CIPHER #
- ERR_CRYPTO_UNKNOWN_DH_GROUP #
- ERR_CRYPTO_UNSUPPORTED_OPERATION #
- ERR_DEBUGGER_ERROR #
- ERR_DEBUGGER_STARTUP_ERROR #
- ERR_DLOPEN_DISABLED #
- ERR_DLOPEN_FAILED #
- ERR_DIR_CLOSED #
- ERR_DIR_CONCURRENT_OPERATION #
- ERR_DNS_SET_SERVERS_FAILED #
- ERR_DOMAIN_CALLBACK_NOT_AVAILABLE #
- ERR_DOMAIN_CANNOT_SET_UNCAUGHT_EXCEPTION_CAPTURE #
- ERR_DUPLICATE_STARTUP_SNAPSHOT_MAIN_FUNCTION #
- ERR_ENCODING_INVALID_ENCODED_DATA #
- ERR_ENCODING_NOT_SUPPORTED #
- ERR_EVAL_ESM_CANNOT_PRINT #
- ERR_EVENT_RECURSION #
- ERR_EXECUTION_ENVIRONMENT_NOT_AVAILABLE #
- ERR_FALSY_VALUE_REJECTION #
- ERR_FEATURE_UNAVAILABLE_ON_PLATFORM #
- ERR_FS_CP_DIR_TO_NON_DIR #
- ERR_FS_CP_EEXIST #
- ERR_FS_CP_EINVAL #
- ERR_HTTP_CONTENT_LENGTH_MISMATCH #
- ERR_FS_CP_FIFO_PIPE #
- ERR_FS_CP_NON_DIR_TO_DIR #
- ERR_FS_CP_SOCKET #
- ERR_FS_CP_SYMLINK_TO_SUBDIRECTORY #
- ERR_FS_CP_UNKNOWN #
- ERR_FS_EISDIR #
- ERR_FS_FILE_TOO_LARGE #
- ERR_FS_INVALID_SYMLINK_TYPE #
- ERR_HTTP_HEADERS_SENT #
- ERR_HTTP_INVALID_HEADER_VALUE #
- ERR_HTTP_INVALID_STATUS_CODE #
- ERR_HTTP_REQUEST_TIMEOUT #
- ERR_HTTP_SOCKET_ENCODING #
- ERR_HTTP_TRAILER_INVALID #
- ERR_HTTP2_ALTSVC_INVALID_ORIGIN #
- ERR_HTTP2_ALTSVC_LENGTH #
- ERR_HTTP2_CONNECT_AUTHORITY #
- ERR_HTTP2_CONNECT_PATH #
- ERR_HTTP2_CONNECT_SCHEME #
- ERR_HTTP2_ERROR #
- ERR_HTTP2_GOAWAY_SESSION #
- ERR_HTTP2_HEADER_SINGLE_VALUE #
- ERR_HTTP2_HEADERS_AFTER_RESPOND #
- ERR_HTTP2_HEADERS_SENT #
- ERR_HTTP2_INFO_STATUS_NOT_ALLOWED #
- ERR_HTTP2_INVALID_CONNECTION_HEADERS #
- ERR_HTTP2_INVALID_HEADER_VALUE #
- ERR_HTTP2_INVALID_INFO_STATUS #
- ERR_HTTP2_INVALID_ORIGIN #
- ERR_HTTP2_INVALID_PACKED_SETTINGS_LENGTH #
- ERR_HTTP2_INVALID_PSEUDOHEADER #
- ERR_HTTP2_INVALID_SESSION #
- ERR_HTTP2_INVALID_SETTING_VALUE #
- ERR_HTTP2_INVALID_STREAM #
- ERR_HTTP2_MAX_PENDING_SETTINGS_ACK #
- ERR_HTTP2_NESTED_PUSH #
- ERR_HTTP2_NO_MEM #
- ERR_HTTP2_NO_SOCKET_MANIPULATION #
- ERR_HTTP2_ORIGIN_LENGTH #
- ERR_HTTP2_OUT_OF_STREAMS #
- ERR_HTTP2_PAYLOAD_FORBIDDEN #
- ERR_HTTP2_PING_CANCEL #
- ERR_HTTP2_PING_LENGTH #
- ERR_HTTP2_PSEUDOHEADER_NOT_ALLOWED #
- ERR_HTTP2_PUSH_DISABLED #
- ERR_HTTP2_SEND_FILE #
- ERR_HTTP2_SEND_FILE_NOSEEK #
- ERR_HTTP2_SESSION_ERROR #
- ERR_HTTP2_SETTINGS_CANCEL #
- ERR_HTTP2_SOCKET_BOUND #
- ERR_HTTP2_SOCKET_UNBOUND #
- ERR_HTTP2_STATUS_101 #
- ERR_HTTP2_STATUS_INVALID #
- ERR_HTTP2_STREAM_CANCEL #
- ERR_HTTP2_STREAM_ERROR #
- ERR_HTTP2_STREAM_SELF_DEPENDENCY #
- ERR_HTTP2_TOO_MANY_INVALID_FRAMES #
- ERR_HTTP2_TRAILERS_ALREADY_SENT #
- ERR_HTTP2_TRAILERS_NOT_READY #
- ERR_HTTP2_UNSUPPORTED_PROTOCOL #
- ERR_ILLEGAL_CONSTRUCTOR #
- ERR_IMPORT_ASSERTION_TYPE_FAILED #
- ERR_IMPORT_ASSERTION_TYPE_MISSING #
- ERR_IMPORT_ASSERTION_TYPE_UNSUPPORTED #
- ERR_INCOMPATIBLE_OPTION_PAIR #
- ERR_INPUT_TYPE_NOT_ALLOWED #
- ERR_INSPECTOR_ALREADY_ACTIVATED #
- ERR_INSPECTOR_ALREADY_CONNECTED #
- ERR_INSPECTOR_CLOSED #
- ERR_INSPECTOR_COMMAND #
- ERR_INSPECTOR_NOT_ACTIVE #
- ERR_INSPECTOR_NOT_AVAILABLE #
- ERR_INSPECTOR_NOT_CONNECTED #
- ERR_INSPECTOR_NOT_WORKER #
- ERR_INTERNAL_ASSERTION #
- ERR_INVALID_ADDRESS_FAMILY #
- ERR_INVALID_ARG_TYPE #
- ERR_INVALID_ARG_VALUE #
- ERR_INVALID_ASYNC_ID #
- ERR_INVALID_BUFFER_SIZE #
- ERR_INVALID_CHAR #
- ERR_INVALID_CURSOR_POS #
- ERR_INVALID_FD #
- ERR_INVALID_FD_TYPE #
- ERR_INVALID_FILE_URL_HOST #
- ERR_INVALID_FILE_URL_PATH #
- ERR_INVALID_HANDLE_TYPE #
- ERR_INVALID_HTTP_TOKEN #
- ERR_INVALID_IP_ADDRESS #
- ERR_INVALID_MIME_SYNTAX #
- ERR_INVALID_MODULE #
- ERR_INVALID_MODULE_SPECIFIER #
- ERR_INVALID_OBJECT_DEFINE_PROPERTY #
- ERR_INVALID_PACKAGE_CONFIG #
- ERR_INVALID_PACKAGE_TARGET #
- ERR_INVALID_PERFORMANCE_MARK #
- ERR_INVALID_PROTOCOL #
- ERR_INVALID_REPL_EVAL_CONFIG #
- ERR_INVALID_REPL_INPUT #
- ERR_INVALID_RETURN_PROPERTY #
- ERR_INVALID_RETURN_PROPERTY_VALUE #
- ERR_INVALID_RETURN_VALUE #
- ERR_INVALID_STATE #
- ERR_INVALID_SYNC_FORK_INPUT #
- ERR_INVALID_THIS #
- ERR_INVALID_TRANSFER_OBJECT #
- ERR_INVALID_TUPLE #
- ERR_INVALID_URI #
- ERR_INVALID_URL #
- ERR_INVALID_URL_SCHEME #
- ERR_IPC_CHANNEL_CLOSED #
- ERR_IPC_DISCONNECTED #
- ERR_IPC_ONE_PIPE #
- ERR_IPC_SYNC_FORK #
- ERR_LOADER_CHAIN_INCOMPLETE #
- ERR_MANIFEST_ASSERT_INTEGRITY #
- ERR_MANIFEST_DEPENDENCY_MISSING #
- ERR_MANIFEST_INTEGRITY_MISMATCH #
- ERR_MANIFEST_INVALID_RESOURCE_FIELD #
- ERR_MANIFEST_INVALID_SPECIFIER #
- ERR_MANIFEST_PARSE_POLICY #
- ERR_MANIFEST_TDZ #
- ERR_MANIFEST_UNKNOWN_ONERROR #
- ERR_MEMORY_ALLOCATION_FAILED #
- ERR_MESSAGE_TARGET_CONTEXT_UNAVAILABLE #
- ERR_METHOD_NOT_IMPLEMENTED #
- ERR_MISSING_ARGS #
- ERR_MISSING_OPTION #
- ERR_MISSING_PASSPHRASE #
- ERR_MISSING_PLATFORM_FOR_WORKER #
- ERR_MISSING_TRANSFERABLE_IN_TRANSFER_LIST #
- ERR_MODULE_NOT_FOUND #
- ERR_MULTIPLE_CALLBACK #
- ERR_NAPI_CONS_FUNCTION #
- ERR_NAPI_INVALID_DATAVIEW_ARGS #
- ERR_NAPI_INVALID_TYPEDARRAY_ALIGNMENT #
- ERR_NAPI_INVALID_TYPEDARRAY_LENGTH #
- ERR_NAPI_TSFN_CALL_JS #
- ERR_NAPI_TSFN_GET_UNDEFINED #
- ERR_NAPI_TSFN_START_IDLE_LOOP #
- ERR_NAPI_TSFN_STOP_IDLE_LOOP #
- ERR_NOT_BUILDING_SNAPSHOT #
- ERR_NO_CRYPTO #
- ERR_NO_ICU #
- ERR_NON_CONTEXT_AWARE_DISABLED #
- ERR_OUT_OF_RANGE #
- ERR_PACKAGE_IMPORT_NOT_DEFINED #
- ERR_PACKAGE_PATH_NOT_EXPORTED #
- ERR_PARSE_ARGS_INVALID_OPTION_VALUE #
- ERR_PARSE_ARGS_UNEXPECTED_POSITIONAL #
- ERR_PARSE_ARGS_UNKNOWN_OPTION #
- ERR_PERFORMANCE_INVALID_TIMESTAMP #
- ERR_PERFORMANCE_MEASURE_INVALID_OPTIONS #
- ERR_PROTO_ACCESS #
- ERR_REQUIRE_ESM #
- ERR_SCRIPT_EXECUTION_INTERRUPTED #
- ERR_SCRIPT_EXECUTION_TIMEOUT #
- ERR_SERVER_ALREADY_LISTEN #
- ERR_SERVER_NOT_RUNNING #
- ERR_SOCKET_ALREADY_BOUND #
- ERR_SOCKET_BAD_BUFFER_SIZE #
- ERR_SOCKET_BAD_PORT #
- ERR_SOCKET_BUFFER_SIZE #
- ERR_SOCKET_CLOSED #
- ERR_SOCKET_CLOSED_BEFORE_CONNECTION #
- ERR_SOCKET_DGRAM_IS_CONNECTED #
- ERR_SOCKET_DGRAM_NOT_CONNECTED #
- ERR_SOCKET_DGRAM_NOT_RUNNING #
- ERR_SRI_PARSE #
- ERR_STREAM_ALREADY_FINISHED #
- ERR_STREAM_CANNOT_PIPE #
- ERR_STREAM_DESTROYED #
- ERR_STREAM_NULL_VALUES #
- ERR_STREAM_PREMATURE_CLOSE #
- ERR_STREAM_PUSH_AFTER_EOF #
- ERR_STREAM_UNSHIFT_AFTER_END_EVENT #
- ERR_STREAM_WRAP #
- ERR_STREAM_WRITE_AFTER_END #
- ERR_STRING_TOO_LONG #
- ERR_SYNTHETIC #
- ERR_SYSTEM_ERROR #
- ERR_TAP_LEXER_ERROR #
- ERR_TAP_PARSER_ERROR #
- ERR_TAP_VALIDATION_ERROR #
- ERR_TEST_FAILURE #
- ERR_TLS_CERT_ALTNAME_FORMAT #
- ERR_TLS_CERT_ALTNAME_INVALID #
- ERR_TLS_DH_PARAM_SIZE #
- ERR_TLS_HANDSHAKE_TIMEOUT #
- ERR_TLS_INVALID_CONTEXT #
- ERR_TLS_INVALID_PROTOCOL_METHOD #
- ERR_TLS_INVALID_PROTOCOL_VERSION #
- ERR_TLS_INVALID_STATE #
- ERR_TLS_PROTOCOL_VERSION_CONFLICT #
- ERR_TLS_PSK_SET_IDENTIY_HINT_FAILED #
- ERR_TLS_RENEGOTIATION_DISABLED #
- ERR_TLS_REQUIRED_SERVER_NAME #
- ERR_TLS_SESSION_ATTACK #
- ERR_TLS_SNI_FROM_SERVER #
- ERR_TRACE_EVENTS_CATEGORY_REQUIRED #
- ERR_TRACE_EVENTS_UNAVAILABLE #
- ERR_TRANSFORM_ALREADY_TRANSFORMING #
- ERR_TRANSFORM_WITH_LENGTH_0 #
- ERR_TTY_INIT_FAILED #
- ERR_UNAVAILABLE_DURING_EXIT #
- ERR_UNCAUGHT_EXCEPTION_CAPTURE_ALREADY_SET #
- ERR_UNESCAPED_CHARACTERS #
- ERR_UNHANDLED_ERROR #
- ERR_UNKNOWN_BUILTIN_MODULE #
- ERR_UNKNOWN_CREDENTIAL #
- ERR_UNKNOWN_ENCODING #
- ERR_UNKNOWN_FILE_EXTENSION #
- ERR_UNKNOWN_MODULE_FORMAT #
- ERR_UNKNOWN_SIGNAL #
- ERR_UNSUPPORTED_DIR_IMPORT #
- ERR_UNSUPPORTED_ESM_URL_SCHEME #
- ERR_USE_AFTER_CLOSE #
- ERR_VALID_PERFORMANCE_ENTRY_TYPE #
- ERR_VM_DYNAMIC_IMPORT_CALLBACK_MISSING #
- ERR_VM_MODULE_ALREADY_LINKED #
- ERR_VM_MODULE_CACHED_DATA_REJECTED #
- ERR_VM_MODULE_CANNOT_CREATE_CACHED_DATA #
- ERR_VM_MODULE_DIFFERENT_CONTEXT #
- ERR_VM_MODULE_LINK_FAILURE #
- ERR_VM_MODULE_NOT_MODULE #
- ERR_VM_MODULE_STATUS #
- ERR_WASI_ALREADY_STARTED #
- ERR_WASI_NOT_STARTED #
- ERR_WEBASSEMBLY_RESPONSE #
- ERR_WORKER_INIT_FAILED #
- ERR_WORKER_INVALID_EXEC_ARGV #
- ERR_WORKER_NOT_RUNNING #
- ERR_WORKER_OUT_OF_MEMORY #
- ERR_WORKER_PATH #
- ERR_WORKER_UNSERIALIZABLE_ERROR #
- ERR_WORKER_UNSUPPORTED_OPERATION #
- ERR_ZLIB_INITIALIZATION_FAILED #
- HPE_HEADER_OVERFLOW #
- HPE_UNEXPECTED_CONTENT_LENGTH #
- MODULE_NOT_FOUND #
- Legacy Node.js error codes #
- ERR_CANNOT_TRANSFER_OBJECT #
- ERR_CRYPTO_HASH_DIGEST_NO_UTF16 #
- ERR_HTTP2_FRAME_ERROR #
- ERR_HTTP2_HEADERS_OBJECT #
- ERR_HTTP2_HEADER_REQUIRED #
- ERR_HTTP2_INFO_HEADERS_AFTER_RESPOND #
- ERR_HTTP2_STREAM_CLOSED #
- ERR_HTTP_INVALID_CHAR #
- ERR_INDEX_OUT_OF_RANGE #
- ERR_INVALID_OPT_VALUE #
- ERR_INVALID_OPT_VALUE_ENCODING #
- ERR_MISSING_MESSAGE_PORT_IN_TRANSFER_LIST #
- ERR_NAPI_CONS_PROTOTYPE_OBJECT #
- ERR_NETWORK_IMPORT_BAD_RESPONSE #
- ERR_NETWORK_IMPORT_DISALLOWED #
- ERR_NO_LONGER_SUPPORTED #
- ERR_OPERATION_FAILED #
- ERR_OUTOFMEMORY #
- ERR_PARSE_HISTORY_DATA #
- ERR_SOCKET_CANNOT_SEND #
- ERR_STDERR_CLOSE #
- ERR_STDOUT_CLOSE #
- ERR_STREAM_READ_NOT_IMPLEMENTED #
- ERR_TLS_RENEGOTIATION_FAILED #
- ERR_TRANSFERRING_EXTERNALIZED_SHAREDARRAYBUFFER #
- ERR_UNKNOWN_STDIN_TYPE #
- ERR_UNKNOWN_STREAM_TYPE #
- ERR_V8BREAKITERATOR #
- ERR_VALUE_OUT_OF_RANGE #
- ERR_VM_MODULE_NOT_LINKED #
- ERR_VM_MODULE_LINKING_ERRORED #
- ERR_WORKER_UNSUPPORTED_EXTENSION #
- ERR_ZLIB_BINDING_CLOSED #
Node.js v19.4.0 documentation
Errors #
Applications running in Node.js will generally experience four categories of errors:
- Standard JavaScript errors such as , , , , , and .
- System errors triggered by underlying operating system constraints such as attempting to open a file that does not exist or attempting to send data over a closed socket.
- User-specified errors triggered by application code.
- AssertionError s are a special class of error that can be triggered when Node.js detects an exceptional logic violation that should never occur. These are raised typically by the node:assert module.
All JavaScript and system errors raised by Node.js inherit from, or are instances of, the standard JavaScript class and are guaranteed to provide at least the properties available on that class.
Error propagation and interception #
Node.js supports several mechanisms for propagating and handling errors that occur while an application is running. How these errors are reported and handled depends entirely on the type of Error and the style of the API that is called.
All JavaScript errors are handled as exceptions that immediately generate and throw an error using the standard JavaScript throw mechanism. These are handled using the try…catch construct provided by the JavaScript language.
Any use of the JavaScript throw mechanism will raise an exception that must be handled using try…catch or the Node.js process will exit immediately.
With few exceptions, Synchronous APIs (any blocking method that does not accept a callback function, such as fs.readFileSync ), will use throw to report errors.
Errors that occur within Asynchronous APIs may be reported in multiple ways:
Most asynchronous methods that accept a callback function will accept an Error object passed as the first argument to that function. If that first argument is not null and is an instance of Error , then an error occurred that should be handled.
When an asynchronous method is called on an object that is an EventEmitter , errors can be routed to that object’s ‘error’ event.
A handful of typically asynchronous methods in the Node.js API may still use the throw mechanism to raise exceptions that must be handled using try…catch . There is no comprehensive list of such methods; please refer to the documentation of each method to determine the appropriate error handling mechanism required.
The use of the ‘error’ event mechanism is most common for stream-based and event emitter-based APIs, which themselves represent a series of asynchronous operations over time (as opposed to a single operation that may pass or fail).
For all EventEmitter objects, if an ‘error’ event handler is not provided, the error will be thrown, causing the Node.js process to report an uncaught exception and crash unless either: The domain module is used appropriately or a handler has been registered for the ‘uncaughtException’ event.
Errors generated in this way cannot be intercepted using try…catch as they are thrown after the calling code has already exited.
Developers must refer to the documentation for each method to determine exactly how errors raised by those methods are propagated.
Error-first callbacks #
Most asynchronous methods exposed by the Node.js core API follow an idiomatic pattern referred to as an error-first callback. With this pattern, a callback function is passed to the method as an argument. When the operation either completes or an error is raised, the callback function is called with the Error object (if any) passed as the first argument. If no error was raised, the first argument will be passed as null .
The JavaScript try…catch mechanism cannot be used to intercept errors generated by asynchronous APIs. A common mistake for beginners is to try to use throw inside an error-first callback:
This will not work because the callback function passed to fs.readFile() is called asynchronously. By the time the callback has been called, the surrounding code, including the try…catch block, will have already exited. Throwing an error inside the callback can crash the Node.js process in most cases. If domains are enabled, or a handler has been registered with process.on(‘uncaughtException’) , such errors can be intercepted.
Class: Error #
A generic JavaScript object that does not denote any specific circumstance of why the error occurred. Error objects capture a «stack trace» detailing the point in the code at which the Error was instantiated, and may provide a text description of the error.
All errors generated by Node.js, including all system and JavaScript errors, will either be instances of, or inherit from, the Error class.
new Error(message[, options]) #
Creates a new Error object and sets the error.message property to the provided text message. If an object is passed as message , the text message is generated by calling String(message) . If the cause option is provided, it is assigned to the error.cause property. The error.stack property will represent the point in the code at which new Error() was called. Stack traces are dependent on V8’s stack trace API. Stack traces extend only to either (a) the beginning of synchronous code execution, or (b) the number of frames given by the property Error.stackTraceLimit , whichever is smaller.
Error.captureStackTrace(targetObject[, constructorOpt]) #
Creates a .stack property on targetObject , which when accessed returns a string representing the location in the code at which Error.captureStackTrace() was called.
The first line of the trace will be prefixed with $: $ .
The optional constructorOpt argument accepts a function. If given, all frames above constructorOpt , including constructorOpt , will be omitted from the generated stack trace.
The constructorOpt argument is useful for hiding implementation details of error generation from the user. For instance:
Error.stackTraceLimit #
The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj) ).
The default value is 10 but may be set to any valid JavaScript number. Changes will affect any stack trace captured after the value has been changed.
If set to a non-number value, or set to a negative number, stack traces will not capture any frames.
error.cause #
If present, the error.cause property is the underlying cause of the Error . It is used when catching an error and throwing a new one with a different message or code in order to still have access to the original error.
The error.cause property is typically set by calling new Error(message, < cause >) . It is not set by the constructor if the cause option is not provided.
This property allows errors to be chained. When serializing Error objects, util.inspect() recursively serializes error.cause if it is set.
error.code #
The error.code property is a string label that identifies the kind of error. error.code is the most stable way to identify an error. It will only change between major versions of Node.js. In contrast, error.message strings may change between any versions of Node.js. See Node.js error codes for details about specific codes.
error.message #
The error.message property is the string description of the error as set by calling new Error(message) . The message passed to the constructor will also appear in the first line of the stack trace of the Error , however changing this property after the Error object is created may not change the first line of the stack trace (for example, when error.stack is read before this property is changed).
error.stack #
The error.stack property is a string describing the point in the code at which the Error was instantiated.
The first line is formatted as : , and is followed by a series of stack frames (each line beginning with «at «). Each frame describes a call site within the code that lead to the error being generated. V8 attempts to display a name for each function (by variable name, function name, or object method name), but occasionally it will not be able to find a suitable name. If V8 cannot determine a name for the function, only location information will be displayed for that frame. Otherwise, the determined function name will be displayed with location information appended in parentheses.
Frames are only generated for JavaScript functions. If, for example, execution synchronously passes through a C++ addon function called cheetahify which itself calls a JavaScript function, the frame representing the cheetahify call will not be present in the stack traces:
The location information will be one of:
- native , if the frame represents a call internal to V8 (as in [].forEach ).
- plain-filename.js:line:column , if the frame represents a call internal to Node.js.
- /absolute/path/to/file.js:line:column , if the frame represents a call in a user program (using CommonJS module system), or its dependencies.
- :///url/to/module/file.mjs:line:column , if the frame represents a call in a user program (using ES module system), or its dependencies.
The string representing the stack trace is lazily generated when the error.stack property is accessed.
The number of frames captured by the stack trace is bounded by the smaller of Error.stackTraceLimit or the number of available frames on the current event loop tick.
Class: AssertionError #
Indicates the failure of an assertion. For details, see Class: assert.AssertionError .
Class: RangeError #
Indicates that a provided argument was not within the set or range of acceptable values for a function; whether that is a numeric range, or outside the set of options for a given function parameter.
Node.js will generate and throw RangeError instances immediately as a form of argument validation.
Class: ReferenceError #
Indicates that an attempt is being made to access a variable that is not defined. Such errors commonly indicate typos in code, or an otherwise broken program.
While client code may generate and propagate these errors, in practice, only V8 will do so.
Unless an application is dynamically generating and running code, ReferenceError instances indicate a bug in the code or its dependencies.
Class: SyntaxError #
Indicates that a program is not valid JavaScript. These errors may only be generated and propagated as a result of code evaluation. Code evaluation may happen as a result of eval , Function , require , or vm. These errors are almost always indicative of a broken program.
SyntaxError instances are unrecoverable in the context that created them – they may only be caught by other contexts.
Class: SystemError #
Node.js generates system errors when exceptions occur within its runtime environment. These usually occur when an application violates an operating system constraint. For example, a system error will occur if an application attempts to read a file that does not exist.
- address If present, the address to which a network connection failed
- code The string error code
- dest If present, the file path destination when reporting a file system error
- errno The system-provided error number
- info If present, extra details about the error condition
- message A system-provided human-readable description of the error
- path If present, the file path when reporting a file system error
- port If present, the network connection port that is not available
- syscall The name of the system call that triggered the error
error.address #
If present, error.address is a string describing the address to which a network connection failed.
error.code #
The error.code property is a string representing the error code.
error.dest #
If present, error.dest is the file path destination when reporting a file system error.
error.errno #
The error.errno property is a negative number which corresponds to the error code defined in libuv Error handling .
On Windows the error number provided by the system will be normalized by libuv.
To get the string representation of the error code, use util.getSystemErrorName(error.errno) .
error.info #
If present, error.info is an object with details about the error condition.
error.message #
error.message is a system-provided human-readable description of the error.
error.path #
If present, error.path is a string containing a relevant invalid pathname.
error.port #
If present, error.port is the network connection port that is not available.
error.syscall #
The error.syscall property is a string describing the syscall that failed.
Common system errors #
This is a list of system errors commonly-encountered when writing a Node.js program. For a comprehensive list, see the errno (3) man page.
EACCES (Permission denied): An attempt was made to access a file in a way forbidden by its file access permissions.
EADDRINUSE (Address already in use): An attempt to bind a server ( net , http , or https ) to a local address failed due to another server on the local system already occupying that address.
ECONNREFUSED (Connection refused): No connection could be made because the target machine actively refused it. This usually results from trying to connect to a service that is inactive on the foreign host.
ECONNRESET (Connection reset by peer): A connection was forcibly closed by a peer. This normally results from a loss of the connection on the remote socket due to a timeout or reboot. Commonly encountered via the http and net modules.
EEXIST (File exists): An existing file was the target of an operation that required that the target not exist.
EISDIR (Is a directory): An operation expected a file, but the given pathname was a directory.
EMFILE (Too many open files in system): Maximum number of file descriptors allowable on the system has been reached, and requests for another descriptor cannot be fulfilled until at least one has been closed. This is encountered when opening many files at once in parallel, especially on systems (in particular, macOS) where there is a low file descriptor limit for processes. To remedy a low limit, run ulimit -n 2048 in the same shell that will run the Node.js process.
ENOENT (No such file or directory): Commonly raised by fs operations to indicate that a component of the specified pathname does not exist. No entity (file or directory) could be found by the given path.
ENOTDIR (Not a directory): A component of the given pathname existed, but was not a directory as expected. Commonly raised by fs.readdir .
ENOTEMPTY (Directory not empty): A directory with entries was the target of an operation that requires an empty directory, usually fs.unlink .
ENOTFOUND (DNS lookup failed): Indicates a DNS failure of either EAI_NODATA or EAI_NONAME . This is not a standard POSIX error.
EPERM (Operation not permitted): An attempt was made to perform an operation that requires elevated privileges.
EPIPE (Broken pipe): A write on a pipe, socket, or FIFO for which there is no process to read the data. Commonly encountered at the net and http layers, indicative that the remote side of the stream being written to has been closed.
ETIMEDOUT (Operation timed out): A connect or send request failed because the connected party did not properly respond after a period of time. Usually encountered by http or net . Often a sign that a socket.end() was not properly called.
Class: TypeError #
Indicates that a provided argument is not an allowable type. For example, passing a function to a parameter which expects a string would be a TypeError .
Node.js will generate and throw TypeError instances immediately as a form of argument validation.
Exceptions vs. errors #
A JavaScript exception is a value that is thrown as a result of an invalid operation or as the target of a throw statement. While it is not required that these values are instances of Error or classes which inherit from Error , all exceptions thrown by Node.js or the JavaScript runtime will be instances of Error .
Some exceptions are unrecoverable at the JavaScript layer. Such exceptions will always cause the Node.js process to crash. Examples include assert() checks or abort() calls in the C++ layer.
OpenSSL errors #
Errors originating in crypto or tls are of class Error , and in addition to the standard .code and .message properties, may have some additional OpenSSL-specific properties.
error.opensslErrorStack #
An array of errors that can give context to where in the OpenSSL library an error originates from.
error.function #
The OpenSSL function the error originates in.
error.library #
The OpenSSL library the error originates in.
error.reason #
A human-readable string describing the reason for the error.
Node.js error codes #
ABORT_ERR #
Used when an operation has been aborted (typically using an AbortController ).
APIs not using AbortSignal s typically do not raise an error with this code.
This code does not use the regular ERR_* convention Node.js errors use in order to be compatible with the web platform’s AbortError .
ERR_AMBIGUOUS_ARGUMENT #
A function argument is being used in a way that suggests that the function signature may be misunderstood. This is thrown by the node:assert module when the message parameter in assert.throws(block, message) matches the error message thrown by block because that usage suggests that the user believes message is the expected message rather than the message the AssertionError will display if block does not throw.
ERR_ARG_NOT_ITERABLE #
An iterable argument (i.e. a value that works with for. of loops) was required, but not provided to a Node.js API.
ERR_ASSERTION #
A special type of error that can be triggered whenever Node.js detects an exceptional logic violation that should never occur. These are raised typically by the node:assert module.
ERR_ASSERT_SNAPSHOT_NOT_SUPPORTED #
An attempt was made to use assert.snapshot() in an environment that does not support snapshots, such as the REPL, or when using node —eval .
ERR_ASYNC_CALLBACK #
An attempt was made to register something that is not a function as an AsyncHooks callback.
ERR_ASYNC_TYPE #
The type of an asynchronous resource was invalid. Users are also able to define their own types if using the public embedder API.
ERR_BROTLI_COMPRESSION_FAILED #
Data passed to a Brotli stream was not successfully compressed.
ERR_BROTLI_INVALID_PARAM #
An invalid parameter key was passed during construction of a Brotli stream.
ERR_BUFFER_CONTEXT_NOT_AVAILABLE #
An attempt was made to create a Node.js Buffer instance from addon or embedder code, while in a JS engine Context that is not associated with a Node.js instance. The data passed to the Buffer method will have been released by the time the method returns.
When encountering this error, a possible alternative to creating a Buffer instance is to create a normal Uint8Array , which only differs in the prototype of the resulting object. Uint8Array s are generally accepted in all Node.js core APIs where Buffer s are; they are available in all Contexts.
ERR_BUFFER_OUT_OF_BOUNDS #
An operation outside the bounds of a Buffer was attempted.
ERR_BUFFER_TOO_LARGE #
An attempt has been made to create a Buffer larger than the maximum allowed size.
ERR_CANNOT_WATCH_SIGINT #
Node.js was unable to watch for the SIGINT signal.
ERR_CHILD_CLOSED_BEFORE_REPLY #
A child process was closed before the parent received a reply.
ERR_CHILD_PROCESS_IPC_REQUIRED #
Used when a child process is being forked without specifying an IPC channel.
ERR_CHILD_PROCESS_STDIO_MAXBUFFER #
Used when the main process is trying to read data from the child process’s STDERR/STDOUT, and the data’s length is longer than the maxBuffer option.
ERR_CLOSED_MESSAGE_PORT #
There was an attempt to use a MessagePort instance in a closed state, usually after .close() has been called.
ERR_CONSOLE_WRITABLE_STREAM #
Console was instantiated without stdout stream, or Console has a non-writable stdout or stderr stream.
ERR_CONSTRUCT_CALL_INVALID #
A class constructor was called that is not callable.
ERR_CONSTRUCT_CALL_REQUIRED #
A constructor for a class was called without new .
ERR_CONTEXT_NOT_INITIALIZED #
The vm context passed into the API is not yet initialized. This could happen when an error occurs (and is caught) during the creation of the context, for example, when the allocation fails or the maximum call stack size is reached when the context is created.
ERR_CRYPTO_CUSTOM_ENGINE_NOT_SUPPORTED #
A client certificate engine was requested that is not supported by the version of OpenSSL being used.
ERR_CRYPTO_ECDH_INVALID_FORMAT #
An invalid value for the format argument was passed to the crypto.ECDH() class getPublicKey() method.
ERR_CRYPTO_ECDH_INVALID_PUBLIC_KEY #
An invalid value for the key argument has been passed to the crypto.ECDH() class computeSecret() method. It means that the public key lies outside of the elliptic curve.
ERR_CRYPTO_ENGINE_UNKNOWN #
An invalid crypto engine identifier was passed to require(‘node:crypto’).setEngine() .
ERR_CRYPTO_FIPS_FORCED #
The —force-fips command-line argument was used but there was an attempt to enable or disable FIPS mode in the node:crypto module.
ERR_CRYPTO_FIPS_UNAVAILABLE #
An attempt was made to enable or disable FIPS mode, but FIPS mode was not available.
ERR_CRYPTO_HASH_FINALIZED #
hash.digest() was called multiple times. The hash.digest() method must be called no more than one time per instance of a Hash object.
ERR_CRYPTO_HASH_UPDATE_FAILED #
hash.update() failed for any reason. This should rarely, if ever, happen.
ERR_CRYPTO_INCOMPATIBLE_KEY #
The given crypto keys are incompatible with the attempted operation.
ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS #
The selected public or private key encoding is incompatible with other options.
ERR_CRYPTO_INITIALIZATION_FAILED #
Initialization of the crypto subsystem failed.
ERR_CRYPTO_INVALID_AUTH_TAG #
An invalid authentication tag was provided.
ERR_CRYPTO_INVALID_COUNTER #
An invalid counter was provided for a counter-mode cipher.
ERR_CRYPTO_INVALID_CURVE #
An invalid elliptic-curve was provided.
ERR_CRYPTO_INVALID_DIGEST #
An invalid crypto digest algorithm was specified.
ERR_CRYPTO_INVALID_IV #
An invalid initialization vector was provided.
ERR_CRYPTO_INVALID_JWK #
An invalid JSON Web Key was provided.
ERR_CRYPTO_INVALID_KEY_OBJECT_TYPE #
The given crypto key object’s type is invalid for the attempted operation.
ERR_CRYPTO_INVALID_KEYLEN #
An invalid key length was provided.
ERR_CRYPTO_INVALID_KEYPAIR #
An invalid key pair was provided.
ERR_CRYPTO_INVALID_KEYTYPE #
An invalid key type was provided.
ERR_CRYPTO_INVALID_MESSAGELEN #
An invalid message length was provided.
ERR_CRYPTO_INVALID_SCRYPT_PARAMS #
Invalid scrypt algorithm parameters were provided.
ERR_CRYPTO_INVALID_STATE #
A crypto method was used on an object that was in an invalid state. For instance, calling cipher.getAuthTag() before calling cipher.final() .
ERR_CRYPTO_INVALID_TAG_LENGTH #
An invalid authentication tag length was provided.
ERR_CRYPTO_JOB_INIT_FAILED #
Initialization of an asynchronous crypto operation failed.
ERR_CRYPTO_JWK_UNSUPPORTED_CURVE #
Key’s Elliptic Curve is not registered for use in the JSON Web Key Elliptic Curve Registry.
ERR_CRYPTO_JWK_UNSUPPORTED_KEY_TYPE #
Key’s Asymmetric Key Type is not registered for use in the JSON Web Key Types Registry.
ERR_CRYPTO_OPERATION_FAILED #
A crypto operation failed for an otherwise unspecified reason.
ERR_CRYPTO_PBKDF2_ERROR #
The PBKDF2 algorithm failed for unspecified reasons. OpenSSL does not provide more details and therefore neither does Node.js.
ERR_CRYPTO_SCRYPT_INVALID_PARAMETER #
One or more crypto.scrypt() or crypto.scryptSync() parameters are outside their legal range.
ERR_CRYPTO_SCRYPT_NOT_SUPPORTED #
Node.js was compiled without scrypt support. Not possible with the official release binaries but can happen with custom builds, including distro builds.
ERR_CRYPTO_SIGN_KEY_REQUIRED #
A signing key was not provided to the sign.sign() method.
ERR_CRYPTO_TIMING_SAFE_EQUAL_LENGTH #
crypto.timingSafeEqual() was called with Buffer , TypedArray , or DataView arguments of different lengths.
ERR_CRYPTO_UNKNOWN_CIPHER #
An unknown cipher was specified.
ERR_CRYPTO_UNKNOWN_DH_GROUP #
An unknown Diffie-Hellman group name was given. See crypto.getDiffieHellman() for a list of valid group names.
ERR_CRYPTO_UNSUPPORTED_OPERATION #
An attempt to invoke an unsupported crypto operation was made.
ERR_DEBUGGER_ERROR #
An error occurred with the debugger.
ERR_DEBUGGER_STARTUP_ERROR #
The debugger timed out waiting for the required host/port to be free.
ERR_DLOPEN_DISABLED #
Loading native addons has been disabled using —no-addons .
ERR_DLOPEN_FAILED #
A call to process.dlopen() failed.
ERR_DIR_CLOSED #
The fs.Dir was previously closed.
ERR_DIR_CONCURRENT_OPERATION #
A synchronous read or close call was attempted on an fs.Dir which has ongoing asynchronous operations.
ERR_DNS_SET_SERVERS_FAILED #
c-ares failed to set the DNS server.
ERR_DOMAIN_CALLBACK_NOT_AVAILABLE #
The node:domain module was not usable since it could not establish the required error handling hooks, because process.setUncaughtExceptionCaptureCallback() had been called at an earlier point in time.
ERR_DOMAIN_CANNOT_SET_UNCAUGHT_EXCEPTION_CAPTURE #
process.setUncaughtExceptionCaptureCallback() could not be called because the node:domain module has been loaded at an earlier point in time.
The stack trace is extended to include the point in time at which the node:domain module had been loaded.
ERR_DUPLICATE_STARTUP_SNAPSHOT_MAIN_FUNCTION #
v8.startupSnapshot.setDeserializeMainFunction() could not be called because it had already been called before.
ERR_ENCODING_INVALID_ENCODED_DATA #
Data provided to TextDecoder() API was invalid according to the encoding provided.
ERR_ENCODING_NOT_SUPPORTED #
Encoding provided to TextDecoder() API was not one of the WHATWG Supported Encodings.
ERR_EVAL_ESM_CANNOT_PRINT #
—print cannot be used with ESM input.
ERR_EVENT_RECURSION #
Thrown when an attempt is made to recursively dispatch an event on EventTarget .
ERR_EXECUTION_ENVIRONMENT_NOT_AVAILABLE #
The JS execution context is not associated with a Node.js environment. This may occur when Node.js is used as an embedded library and some hooks for the JS engine are not set up properly.
ERR_FALSY_VALUE_REJECTION #
A Promise that was callbackified via util.callbackify() was rejected with a falsy value.
ERR_FEATURE_UNAVAILABLE_ON_PLATFORM #
Used when a feature that is not available to the current platform which is running Node.js is used.
ERR_FS_CP_DIR_TO_NON_DIR #
An attempt was made to copy a directory to a non-directory (file, symlink, etc.) using fs.cp() .
ERR_FS_CP_EEXIST #
An attempt was made to copy over a file that already existed with fs.cp() , with the force and errorOnExist set to true .
ERR_FS_CP_EINVAL #
When using fs.cp() , src or dest pointed to an invalid path.
ERR_HTTP_CONTENT_LENGTH_MISMATCH #
Response body size doesn’t match with the specified content-length header value.
ERR_FS_CP_FIFO_PIPE #
An attempt was made to copy a named pipe with fs.cp() .
ERR_FS_CP_NON_DIR_TO_DIR #
An attempt was made to copy a non-directory (file, symlink, etc.) to a directory using fs.cp() .
ERR_FS_CP_SOCKET #
An attempt was made to copy to a socket with fs.cp() .
ERR_FS_CP_SYMLINK_TO_SUBDIRECTORY #
When using fs.cp() , a symlink in dest pointed to a subdirectory of src .
ERR_FS_CP_UNKNOWN #
An attempt was made to copy to an unknown file type with fs.cp() .
ERR_FS_EISDIR #
Path is a directory.
ERR_FS_FILE_TOO_LARGE #
An attempt has been made to read a file whose size is larger than the maximum allowed size for a Buffer .
ERR_FS_INVALID_SYMLINK_TYPE #
An invalid symlink type was passed to the fs.symlink() or fs.symlinkSync() methods.
An attempt was made to add more headers after the headers had already been sent.
An invalid HTTP header value was specified.
ERR_HTTP_INVALID_STATUS_CODE #
Status code was outside the regular status code range (100-999).
ERR_HTTP_REQUEST_TIMEOUT #
The client has not sent the entire request within the allowed time.
ERR_HTTP_SOCKET_ENCODING #
Changing the socket encoding is not allowed per RFC 7230 Section 3.
ERR_HTTP_TRAILER_INVALID #
The Trailer header was set even though the transfer encoding does not support that.
ERR_HTTP2_ALTSVC_INVALID_ORIGIN #
HTTP/2 ALTSVC frames require a valid origin.
ERR_HTTP2_ALTSVC_LENGTH #
HTTP/2 ALTSVC frames are limited to a maximum of 16,382 payload bytes.
For HTTP/2 requests using the CONNECT method, the :authority pseudo-header is required.
ERR_HTTP2_CONNECT_PATH #
For HTTP/2 requests using the CONNECT method, the :path pseudo-header is forbidden.
ERR_HTTP2_CONNECT_SCHEME #
For HTTP/2 requests using the CONNECT method, the :scheme pseudo-header is forbidden.
ERR_HTTP2_ERROR #
A non-specific HTTP/2 error has occurred.
ERR_HTTP2_GOAWAY_SESSION #
New HTTP/2 Streams may not be opened after the Http2Session has received a GOAWAY frame from the connected peer.
Multiple values were provided for an HTTP/2 header field that was required to have only a single value.
An additional headers was specified after an HTTP/2 response was initiated.
An attempt was made to send multiple response headers.
ERR_HTTP2_INFO_STATUS_NOT_ALLOWED #
Informational HTTP status codes ( 1xx ) may not be set as the response status code on HTTP/2 responses.
HTTP/1 connection specific headers are forbidden to be used in HTTP/2 requests and responses.
An invalid HTTP/2 header value was specified.
ERR_HTTP2_INVALID_INFO_STATUS #
An invalid HTTP informational status code has been specified. Informational status codes must be an integer between 100 and 199 (inclusive).
ERR_HTTP2_INVALID_ORIGIN #
HTTP/2 ORIGIN frames require a valid origin.
ERR_HTTP2_INVALID_PACKED_SETTINGS_LENGTH #
Input Buffer and Uint8Array instances passed to the http2.getUnpackedSettings() API must have a length that is a multiple of six.
Only valid HTTP/2 pseudoheaders ( :status , :path , :authority , :scheme , and :method ) may be used.
ERR_HTTP2_INVALID_SESSION #
An action was performed on an Http2Session object that had already been destroyed.
ERR_HTTP2_INVALID_SETTING_VALUE #
An invalid value has been specified for an HTTP/2 setting.
ERR_HTTP2_INVALID_STREAM #
An operation was performed on a stream that had already been destroyed.
ERR_HTTP2_MAX_PENDING_SETTINGS_ACK #
Whenever an HTTP/2 SETTINGS frame is sent to a connected peer, the peer is required to send an acknowledgment that it has received and applied the new SETTINGS . By default, a maximum number of unacknowledged SETTINGS frames may be sent at any given time. This error code is used when that limit has been reached.
ERR_HTTP2_NESTED_PUSH #
An attempt was made to initiate a new push stream from within a push stream. Nested push streams are not permitted.
ERR_HTTP2_NO_MEM #
Out of memory when using the http2session.setLocalWindowSize(windowSize) API.
ERR_HTTP2_NO_SOCKET_MANIPULATION #
An attempt was made to directly manipulate (read, write, pause, resume, etc.) a socket attached to an Http2Session .
ERR_HTTP2_ORIGIN_LENGTH #
HTTP/2 ORIGIN frames are limited to a length of 16382 bytes.
ERR_HTTP2_OUT_OF_STREAMS #
The number of streams created on a single HTTP/2 session reached the maximum limit.
ERR_HTTP2_PAYLOAD_FORBIDDEN #
A message payload was specified for an HTTP response code for which a payload is forbidden.
ERR_HTTP2_PING_CANCEL #
An HTTP/2 ping was canceled.
ERR_HTTP2_PING_LENGTH #
HTTP/2 ping payloads must be exactly 8 bytes in length.
An HTTP/2 pseudo-header has been used inappropriately. Pseudo-headers are header key names that begin with the : prefix.
ERR_HTTP2_PUSH_DISABLED #
An attempt was made to create a push stream, which had been disabled by the client.
ERR_HTTP2_SEND_FILE #
An attempt was made to use the Http2Stream.prototype.responseWithFile() API to send a directory.
ERR_HTTP2_SEND_FILE_NOSEEK #
An attempt was made to use the Http2Stream.prototype.responseWithFile() API to send something other than a regular file, but offset or length options were provided.
ERR_HTTP2_SESSION_ERROR #
The Http2Session closed with a non-zero error code.
ERR_HTTP2_SETTINGS_CANCEL #
The Http2Session settings canceled.
ERR_HTTP2_SOCKET_BOUND #
An attempt was made to connect a Http2Session object to a net.Socket or tls.TLSSocket that had already been bound to another Http2Session object.
ERR_HTTP2_SOCKET_UNBOUND #
An attempt was made to use the socket property of an Http2Session that has already been closed.
ERR_HTTP2_STATUS_101 #
Use of the 101 Informational status code is forbidden in HTTP/2.
ERR_HTTP2_STATUS_INVALID #
An invalid HTTP status code has been specified. Status codes must be an integer between 100 and 599 (inclusive).
ERR_HTTP2_STREAM_CANCEL #
An Http2Stream was destroyed before any data was transmitted to the connected peer.
ERR_HTTP2_STREAM_ERROR #
A non-zero error code was been specified in an RST_STREAM frame.
ERR_HTTP2_STREAM_SELF_DEPENDENCY #
When setting the priority for an HTTP/2 stream, the stream may be marked as a dependency for a parent stream. This error code is used when an attempt is made to mark a stream and dependent of itself.
ERR_HTTP2_TOO_MANY_INVALID_FRAMES #
The limit of acceptable invalid HTTP/2 protocol frames sent by the peer, as specified through the maxSessionInvalidFrames option, has been exceeded.
ERR_HTTP2_TRAILERS_ALREADY_SENT #
Trailing headers have already been sent on the Http2Stream .
ERR_HTTP2_TRAILERS_NOT_READY #
The http2stream.sendTrailers() method cannot be called until after the ‘wantTrailers’ event is emitted on an Http2Stream object. The ‘wantTrailers’ event will only be emitted if the waitForTrailers option is set for the Http2Stream .
ERR_HTTP2_UNSUPPORTED_PROTOCOL #
http2.connect() was passed a URL that uses any protocol other than http: or https: .
ERR_ILLEGAL_CONSTRUCTOR #
An attempt was made to construct an object using a non-public constructor.
ERR_IMPORT_ASSERTION_TYPE_FAILED #
An import assertion has failed, preventing the specified module to be imported.
ERR_IMPORT_ASSERTION_TYPE_MISSING #
An import assertion is missing, preventing the specified module to be imported.
ERR_IMPORT_ASSERTION_TYPE_UNSUPPORTED #
An import assertion is not supported by this version of Node.js.
ERR_INCOMPATIBLE_OPTION_PAIR #
An option pair is incompatible with each other and cannot be used at the same time.
ERR_INPUT_TYPE_NOT_ALLOWED #
The —input-type flag was used to attempt to execute a file. This flag can only be used with input via —eval , —print , or STDIN .
ERR_INSPECTOR_ALREADY_ACTIVATED #
While using the node:inspector module, an attempt was made to activate the inspector when it already started to listen on a port. Use inspector.close() before activating it on a different address.
ERR_INSPECTOR_ALREADY_CONNECTED #
While using the node:inspector module, an attempt was made to connect when the inspector was already connected.
ERR_INSPECTOR_CLOSED #
While using the node:inspector module, an attempt was made to use the inspector after the session had already closed.
ERR_INSPECTOR_COMMAND #
An error occurred while issuing a command via the node:inspector module.
ERR_INSPECTOR_NOT_ACTIVE #
The inspector is not active when inspector.waitForDebugger() is called.
ERR_INSPECTOR_NOT_AVAILABLE #
The node:inspector module is not available for use.
ERR_INSPECTOR_NOT_CONNECTED #
While using the node:inspector module, an attempt was made to use the inspector before it was connected.
ERR_INSPECTOR_NOT_WORKER #
An API was called on the main thread that can only be used from the worker thread.
ERR_INTERNAL_ASSERTION #
There was a bug in Node.js or incorrect usage of Node.js internals. To fix the error, open an issue at https://github.com/nodejs/node/issues.
ERR_INVALID_ADDRESS_FAMILY #
The provided address family is not understood by the Node.js API.
ERR_INVALID_ARG_TYPE #
An argument of the wrong type was passed to a Node.js API.
ERR_INVALID_ARG_VALUE #
An invalid or unsupported value was passed for a given argument.
ERR_INVALID_ASYNC_ID #
An invalid asyncId or triggerAsyncId was passed using AsyncHooks . An id less than -1 should never happen.
ERR_INVALID_BUFFER_SIZE #
A swap was performed on a Buffer but its size was not compatible with the operation.
ERR_INVALID_CHAR #
Invalid characters were detected in headers.
ERR_INVALID_CURSOR_POS #
A cursor on a given stream cannot be moved to a specified row without a specified column.
ERR_INVALID_FD #
A file descriptor (‘fd’) was not valid (e.g. it was a negative value).
ERR_INVALID_FD_TYPE #
A file descriptor (‘fd’) type was not valid.
ERR_INVALID_FILE_URL_HOST #
A Node.js API that consumes file: URLs (such as certain functions in the fs module) encountered a file URL with an incompatible host. This situation can only occur on Unix-like systems where only localhost or an empty host is supported.
ERR_INVALID_FILE_URL_PATH #
A Node.js API that consumes file: URLs (such as certain functions in the fs module) encountered a file URL with an incompatible path. The exact semantics for determining whether a path can be used is platform-dependent.
ERR_INVALID_HANDLE_TYPE #
An attempt was made to send an unsupported «handle» over an IPC communication channel to a child process. See subprocess.send() and process.send() for more information.
ERR_INVALID_HTTP_TOKEN #
An invalid HTTP token was supplied.
ERR_INVALID_IP_ADDRESS #
An IP address is not valid.
ERR_INVALID_MIME_SYNTAX #
The syntax of a MIME is not valid.
ERR_INVALID_MODULE #
An attempt was made to load a module that does not exist or was otherwise not valid.
ERR_INVALID_MODULE_SPECIFIER #
The imported module string is an invalid URL, package name, or package subpath specifier.
ERR_INVALID_OBJECT_DEFINE_PROPERTY #
An error occurred while setting an invalid attribute on the property of an object.
ERR_INVALID_PACKAGE_CONFIG #
An invalid package.json file failed parsing.
ERR_INVALID_PACKAGE_TARGET #
The package.json «exports» field contains an invalid target mapping value for the attempted module resolution.
ERR_INVALID_PERFORMANCE_MARK #
While using the Performance Timing API ( perf_hooks ), a performance mark is invalid.
ERR_INVALID_PROTOCOL #
An invalid options.protocol was passed to http.request() .
ERR_INVALID_REPL_EVAL_CONFIG #
Both breakEvalOnSigint and eval options were set in the REPL config, which is not supported.
ERR_INVALID_REPL_INPUT #
The input may not be used in the REPL . The conditions under which this error is used are described in the REPL documentation.
ERR_INVALID_RETURN_PROPERTY #
Thrown in case a function option does not provide a valid value for one of its returned object properties on execution.
ERR_INVALID_RETURN_PROPERTY_VALUE #
Thrown in case a function option does not provide an expected value type for one of its returned object properties on execution.
ERR_INVALID_RETURN_VALUE #
Thrown in case a function option does not return an expected value type on execution, such as when a function is expected to return a promise.
ERR_INVALID_STATE #
Indicates that an operation cannot be completed due to an invalid state. For instance, an object may have already been destroyed, or may be performing another operation.
ERR_INVALID_SYNC_FORK_INPUT #
A Buffer , TypedArray , DataView , or string was provided as stdio input to an asynchronous fork. See the documentation for the child_process module for more information.
ERR_INVALID_THIS #
A Node.js API function was called with an incompatible this value.
ERR_INVALID_TRANSFER_OBJECT #
An invalid transfer object was passed to postMessage() .
ERR_INVALID_TUPLE #
An element in the iterable provided to the WHATWG URLSearchParams constructor did not represent a [name, value] tuple – that is, if an element is not iterable, or does not consist of exactly two elements.
ERR_INVALID_URI #
An invalid URI was passed.
ERR_INVALID_URL #
An invalid URL was passed to the WHATWG URL constructor or the legacy url.parse() to be parsed. The thrown error object typically has an additional property ‘input’ that contains the URL that failed to parse.
ERR_INVALID_URL_SCHEME #
An attempt was made to use a URL of an incompatible scheme (protocol) for a specific purpose. It is only used in the WHATWG URL API support in the fs module (which only accepts URLs with ‘file’ scheme), but may be used in other Node.js APIs as well in the future.
ERR_IPC_CHANNEL_CLOSED #
An attempt was made to use an IPC communication channel that was already closed.
ERR_IPC_DISCONNECTED #
An attempt was made to disconnect an IPC communication channel that was already disconnected. See the documentation for the child_process module for more information.
ERR_IPC_ONE_PIPE #
An attempt was made to create a child Node.js process using more than one IPC communication channel. See the documentation for the child_process module for more information.
ERR_IPC_SYNC_FORK #
An attempt was made to open an IPC communication channel with a synchronously forked Node.js process. See the documentation for the child_process module for more information.
ERR_LOADER_CHAIN_INCOMPLETE #
An ESM loader hook returned without calling next() and without explicitly signaling a short circuit.
ERR_MANIFEST_ASSERT_INTEGRITY #
An attempt was made to load a resource, but the resource did not match the integrity defined by the policy manifest. See the documentation for policy manifests for more information.
ERR_MANIFEST_DEPENDENCY_MISSING #
An attempt was made to load a resource, but the resource was not listed as a dependency from the location that attempted to load it. See the documentation for policy manifests for more information.
ERR_MANIFEST_INTEGRITY_MISMATCH #
An attempt was made to load a policy manifest, but the manifest had multiple entries for a resource which did not match each other. Update the manifest entries to match in order to resolve this error. See the documentation for policy manifests for more information.
ERR_MANIFEST_INVALID_RESOURCE_FIELD #
A policy manifest resource had an invalid value for one of its fields. Update the manifest entry to match in order to resolve this error. See the documentation for policy manifests for more information.
ERR_MANIFEST_INVALID_SPECIFIER #
A policy manifest resource had an invalid value for one of its dependency mappings. Update the manifest entry to match to resolve this error. See the documentation for policy manifests for more information.
ERR_MANIFEST_PARSE_POLICY #
An attempt was made to load a policy manifest, but the manifest was unable to be parsed. See the documentation for policy manifests for more information.
ERR_MANIFEST_TDZ #
An attempt was made to read from a policy manifest, but the manifest initialization has not yet taken place. This is likely a bug in Node.js.
ERR_MANIFEST_UNKNOWN_ONERROR #
A policy manifest was loaded, but had an unknown value for its «onerror» behavior. See the documentation for policy manifests for more information.
ERR_MEMORY_ALLOCATION_FAILED #
An attempt was made to allocate memory (usually in the C++ layer) but it failed.
ERR_MESSAGE_TARGET_CONTEXT_UNAVAILABLE #
A message posted to a MessagePort could not be deserialized in the target vm Context . Not all Node.js objects can be successfully instantiated in any context at this time, and attempting to transfer them using postMessage() can fail on the receiving side in that case.
ERR_METHOD_NOT_IMPLEMENTED #
A method is required but not implemented.
ERR_MISSING_ARGS #
A required argument of a Node.js API was not passed. This is only used for strict compliance with the API specification (which in some cases may accept func(undefined) but not func() ). In most native Node.js APIs, func(undefined) and func() are treated identically, and the ERR_INVALID_ARG_TYPE error code may be used instead.
ERR_MISSING_OPTION #
For APIs that accept options objects, some options might be mandatory. This code is thrown if a required option is missing.
ERR_MISSING_PASSPHRASE #
An attempt was made to read an encrypted key without specifying a passphrase.
ERR_MISSING_PLATFORM_FOR_WORKER #
The V8 platform used by this instance of Node.js does not support creating Workers. This is caused by lack of embedder support for Workers. In particular, this error will not occur with standard builds of Node.js.
ERR_MISSING_TRANSFERABLE_IN_TRANSFER_LIST #
An object that needs to be explicitly listed in the transferList argument is in the object passed to a postMessage() call, but is not provided in the transferList for that call. Usually, this is a MessagePort .
In Node.js versions prior to v15.0.0, the error code being used here was ERR_MISSING_MESSAGE_PORT_IN_TRANSFER_LIST . However, the set of transferable object types has been expanded to cover more types than MessagePort .
ERR_MODULE_NOT_FOUND #
A module file could not be resolved by the ECMAScript modules loader while attempting an import operation or when loading the program entry point.
ERR_MULTIPLE_CALLBACK #
A callback was called more than once.
A callback is almost always meant to only be called once as the query can either be fulfilled or rejected but not both at the same time. The latter would be possible by calling a callback more than once.
ERR_NAPI_CONS_FUNCTION #
While using Node-API , a constructor passed was not a function.
ERR_NAPI_INVALID_DATAVIEW_ARGS #
While calling napi_create_dataview() , a given offset was outside the bounds of the dataview or offset + length was larger than a length of given buffer .
ERR_NAPI_INVALID_TYPEDARRAY_ALIGNMENT #
While calling napi_create_typedarray() , the provided offset was not a multiple of the element size.
ERR_NAPI_INVALID_TYPEDARRAY_LENGTH #
While calling napi_create_typedarray() , (length * size_of_element) + byte_offset was larger than the length of given buffer .
ERR_NAPI_TSFN_CALL_JS #
An error occurred while invoking the JavaScript portion of the thread-safe function.
ERR_NAPI_TSFN_GET_UNDEFINED #
An error occurred while attempting to retrieve the JavaScript undefined value.
ERR_NAPI_TSFN_START_IDLE_LOOP #
On the main thread, values are removed from the queue associated with the thread-safe function in an idle loop. This error indicates that an error has occurred when attempting to start the loop.
ERR_NAPI_TSFN_STOP_IDLE_LOOP #
Once no more items are left in the queue, the idle loop must be suspended. This error indicates that the idle loop has failed to stop.
ERR_NOT_BUILDING_SNAPSHOT #
An attempt was made to use operations that can only be used when building V8 startup snapshot even though Node.js isn’t building one.
ERR_NO_CRYPTO #
An attempt was made to use crypto features while Node.js was not compiled with OpenSSL crypto support.
ERR_NO_ICU #
An attempt was made to use features that require ICU, but Node.js was not compiled with ICU support.
ERR_NON_CONTEXT_AWARE_DISABLED #
A non-context-aware native addon was loaded in a process that disallows them.
ERR_OUT_OF_RANGE #
A given value is out of the accepted range.
ERR_PACKAGE_IMPORT_NOT_DEFINED #
The package.json «imports» field does not define the given internal package specifier mapping.
ERR_PACKAGE_PATH_NOT_EXPORTED #
The package.json «exports» field does not export the requested subpath. Because exports are encapsulated, private internal modules that are not exported cannot be imported through the package resolution, unless using an absolute URL.
ERR_PARSE_ARGS_INVALID_OPTION_VALUE #
When strict set to true , thrown by util.parseArgs() if a value is provided for an option of type , or if a value is provided for an option of type .
ERR_PARSE_ARGS_UNEXPECTED_POSITIONAL #
Thrown by util.parseArgs() , when a positional argument is provided and allowPositionals is set to false .
ERR_PARSE_ARGS_UNKNOWN_OPTION #
When strict set to true , thrown by util.parseArgs() if an argument is not configured in options .
ERR_PERFORMANCE_INVALID_TIMESTAMP #
An invalid timestamp value was provided for a performance mark or measure.
ERR_PERFORMANCE_MEASURE_INVALID_OPTIONS #
Invalid options were provided for a performance measure.
ERR_PROTO_ACCESS #
Accessing Object.prototype.__proto__ has been forbidden using —disable-proto=throw . Object.getPrototypeOf and Object.setPrototypeOf should be used to get and set the prototype of an object.
ERR_REQUIRE_ESM #
An attempt was made to require() an ES Module.
ERR_SCRIPT_EXECUTION_INTERRUPTED #
Script execution was interrupted by SIGINT (For example, Ctrl + C was pressed.)
ERR_SCRIPT_EXECUTION_TIMEOUT #
Script execution timed out, possibly due to bugs in the script being executed.
ERR_SERVER_ALREADY_LISTEN #
The server.listen() method was called while a net.Server was already listening. This applies to all instances of net.Server , including HTTP, HTTPS, and HTTP/2 Server instances.
ERR_SERVER_NOT_RUNNING #
The server.close() method was called when a net.Server was not running. This applies to all instances of net.Server , including HTTP, HTTPS, and HTTP/2 Server instances.
ERR_SOCKET_ALREADY_BOUND #
An attempt was made to bind a socket that has already been bound.
ERR_SOCKET_BAD_BUFFER_SIZE #
An invalid (negative) size was passed for either the recvBufferSize or sendBufferSize options in dgram.createSocket() .
ERR_SOCKET_BAD_PORT #
An API function expecting a port >= 0 and ERR_SOCKET_BAD_TYPE #
An API function expecting a socket type ( udp4 or udp6 ) received an invalid value.
ERR_SOCKET_BUFFER_SIZE #
While using dgram.createSocket() , the size of the receive or send Buffer could not be determined.
ERR_SOCKET_CLOSED #
An attempt was made to operate on an already closed socket.
ERR_SOCKET_CLOSED_BEFORE_CONNECTION #
When calling net.Socket.write() on a connecting socket and the socket was closed before the connection was established.
ERR_SOCKET_DGRAM_IS_CONNECTED #
A dgram.connect() call was made on an already connected socket.
ERR_SOCKET_DGRAM_NOT_CONNECTED #
A dgram.disconnect() or dgram.remoteAddress() call was made on a disconnected socket.
ERR_SOCKET_DGRAM_NOT_RUNNING #
A call was made and the UDP subsystem was not running.
ERR_SRI_PARSE #
A string was provided for a Subresource Integrity check, but was unable to be parsed. Check the format of integrity attributes by looking at the Subresource Integrity specification.
ERR_STREAM_ALREADY_FINISHED #
A stream method was called that cannot complete because the stream was finished.
ERR_STREAM_CANNOT_PIPE #
An attempt was made to call stream.pipe() on a Writable stream.
ERR_STREAM_DESTROYED #
A stream method was called that cannot complete because the stream was destroyed using stream.destroy() .
ERR_STREAM_NULL_VALUES #
An attempt was made to call stream.write() with a null chunk.
ERR_STREAM_PREMATURE_CLOSE #
An error returned by stream.finished() and stream.pipeline() , when a stream or a pipeline ends non gracefully with no explicit error.
ERR_STREAM_PUSH_AFTER_EOF #
An attempt was made to call stream.push() after a null (EOF) had been pushed to the stream.
ERR_STREAM_UNSHIFT_AFTER_END_EVENT #
An attempt was made to call stream.unshift() after the ‘end’ event was emitted.
ERR_STREAM_WRAP #
Prevents an abort if a string decoder was set on the Socket or if the decoder is in objectMode .
ERR_STREAM_WRITE_AFTER_END #
An attempt was made to call stream.write() after stream.end() has been called.
ERR_STRING_TOO_LONG #
An attempt has been made to create a string longer than the maximum allowed length.
ERR_SYNTHETIC #
An artificial error object used to capture the call stack for diagnostic reports.
ERR_SYSTEM_ERROR #
An unspecified or non-specific system error has occurred within the Node.js process. The error object will have an err.info object property with additional details.
ERR_TAP_LEXER_ERROR #
An error representing a failing lexer state.
ERR_TAP_PARSER_ERROR #
An error representing a failing parser state. Additional information about the token causing the error is available via the cause property.
ERR_TAP_VALIDATION_ERROR #
This error represents a failed TAP validation.
ERR_TEST_FAILURE #
This error represents a failed test. Additional information about the failure is available via the cause property. The failureType property specifies what the test was doing when the failure occurred.
ERR_TLS_CERT_ALTNAME_FORMAT #
This error is thrown by checkServerIdentity if a user-supplied subjectaltname property violates encoding rules. Certificate objects produced by Node.js itself always comply with encoding rules and will never cause this error.
ERR_TLS_CERT_ALTNAME_INVALID #
While using TLS, the host name/IP of the peer did not match any of the subjectAltNames in its certificate.
ERR_TLS_DH_PARAM_SIZE #
While using TLS, the parameter offered for the Diffie-Hellman ( DH ) key-agreement protocol is too small. By default, the key length must be greater than or equal to 1024 bits to avoid vulnerabilities, even though it is strongly recommended to use 2048 bits or larger for stronger security.
ERR_TLS_HANDSHAKE_TIMEOUT #
A TLS/SSL handshake timed out. In this case, the server must also abort the connection.
ERR_TLS_INVALID_CONTEXT #
The context must be a SecureContext .
ERR_TLS_INVALID_PROTOCOL_METHOD #
The specified secureProtocol method is invalid. It is either unknown, or disabled because it is insecure.
ERR_TLS_INVALID_PROTOCOL_VERSION #
Valid TLS protocol versions are ‘TLSv1’ , ‘TLSv1.1’ , or ‘TLSv1.2’ .
ERR_TLS_INVALID_STATE #
The TLS socket must be connected and securely established. Ensure the ‘secure’ event is emitted before continuing.
ERR_TLS_PROTOCOL_VERSION_CONFLICT #
Attempting to set a TLS protocol minVersion or maxVersion conflicts with an attempt to set the secureProtocol explicitly. Use one mechanism or the other.
ERR_TLS_PSK_SET_IDENTIY_HINT_FAILED #
Failed to set PSK identity hint. Hint may be too long.
ERR_TLS_RENEGOTIATION_DISABLED #
An attempt was made to renegotiate TLS on a socket instance with TLS disabled.
ERR_TLS_REQUIRED_SERVER_NAME #
While using TLS, the server.addContext() method was called without providing a host name in the first parameter.
ERR_TLS_SESSION_ATTACK #
An excessive amount of TLS renegotiations is detected, which is a potential vector for denial-of-service attacks.
ERR_TLS_SNI_FROM_SERVER #
An attempt was made to issue Server Name Indication from a TLS server-side socket, which is only valid from a client.
ERR_TRACE_EVENTS_CATEGORY_REQUIRED #
The trace_events.createTracing() method requires at least one trace event category.
ERR_TRACE_EVENTS_UNAVAILABLE #
The node:trace_events module could not be loaded because Node.js was compiled with the —without-v8-platform flag.
ERR_TRANSFORM_ALREADY_TRANSFORMING #
A Transform stream finished while it was still transforming.
ERR_TRANSFORM_WITH_LENGTH_0 #
A Transform stream finished with data still in the write buffer.
ERR_TTY_INIT_FAILED #
The initialization of a TTY failed due to a system error.
ERR_UNAVAILABLE_DURING_EXIT #
Function was called within a process.on(‘exit’) handler that shouldn’t be called within process.on(‘exit’) handler.
ERR_UNCAUGHT_EXCEPTION_CAPTURE_ALREADY_SET #
process.setUncaughtExceptionCaptureCallback() was called twice, without first resetting the callback to null .
This error is designed to prevent accidentally overwriting a callback registered from another module.
ERR_UNESCAPED_CHARACTERS #
A string that contained unescaped characters was received.
ERR_UNHANDLED_ERROR #
An unhandled error occurred (for instance, when an ‘error’ event is emitted by an EventEmitter but an ‘error’ handler is not registered).
ERR_UNKNOWN_BUILTIN_MODULE #
Used to identify a specific kind of internal Node.js error that should not typically be triggered by user code. Instances of this error point to an internal bug within the Node.js binary itself.
ERR_UNKNOWN_CREDENTIAL #
A Unix group or user identifier that does not exist was passed.
ERR_UNKNOWN_ENCODING #
An invalid or unknown encoding option was passed to an API.
ERR_UNKNOWN_FILE_EXTENSION #
An attempt was made to load a module with an unknown or unsupported file extension.
ERR_UNKNOWN_MODULE_FORMAT #
An attempt was made to load a module with an unknown or unsupported format.
ERR_UNKNOWN_SIGNAL #
An invalid or unknown process signal was passed to an API expecting a valid signal (such as subprocess.kill() ).
ERR_UNSUPPORTED_DIR_IMPORT #
import a directory URL is unsupported. Instead, self-reference a package using its name and define a custom subpath in the «exports» field of the package.json file.
ERR_UNSUPPORTED_ESM_URL_SCHEME #
import with URL schemes other than file and data is unsupported.
ERR_USE_AFTER_CLOSE #
An attempt was made to use something that was already closed.
ERR_VALID_PERFORMANCE_ENTRY_TYPE #
While using the Performance Timing API ( perf_hooks ), no valid performance entry types are found.
ERR_VM_DYNAMIC_IMPORT_CALLBACK_MISSING #
A dynamic import callback was not specified.
ERR_VM_MODULE_ALREADY_LINKED #
The module attempted to be linked is not eligible for linking, because of one of the following reasons:
- It has already been linked ( linkingStatus is ‘linked’ )
- It is being linked ( linkingStatus is ‘linking’ )
- Linking has failed for this module ( linkingStatus is ‘errored’ )
ERR_VM_MODULE_CACHED_DATA_REJECTED #
The cachedData option passed to a module constructor is invalid.
ERR_VM_MODULE_CANNOT_CREATE_CACHED_DATA #
Cached data cannot be created for modules which have already been evaluated.
ERR_VM_MODULE_DIFFERENT_CONTEXT #
The module being returned from the linker function is from a different context than the parent module. Linked modules must share the same context.
ERR_VM_MODULE_LINK_FAILURE #
The module was unable to be linked due to a failure.
ERR_VM_MODULE_NOT_MODULE #
The fulfilled value of a linking promise is not a vm.Module object.
ERR_VM_MODULE_STATUS #
The current module’s status does not allow for this operation. The specific meaning of the error depends on the specific function.
ERR_WASI_ALREADY_STARTED #
The WASI instance has already started.
ERR_WASI_NOT_STARTED #
The WASI instance has not been started.
ERR_WEBASSEMBLY_RESPONSE #
The Response that has been passed to WebAssembly.compileStreaming or to WebAssembly.instantiateStreaming is not a valid WebAssembly response.
ERR_WORKER_INIT_FAILED #
The Worker initialization failed.
ERR_WORKER_INVALID_EXEC_ARGV #
The execArgv option passed to the Worker constructor contains invalid flags.
ERR_WORKER_NOT_RUNNING #
An operation failed because the Worker instance is not currently running.
ERR_WORKER_OUT_OF_MEMORY #
The Worker instance terminated because it reached its memory limit.
ERR_WORKER_PATH #
The path for the main script of a worker is neither an absolute path nor a relative path starting with ./ or ../ .
ERR_WORKER_UNSERIALIZABLE_ERROR #
All attempts at serializing an uncaught exception from a worker thread failed.
ERR_WORKER_UNSUPPORTED_OPERATION #
The requested functionality is not supported in worker threads.
ERR_ZLIB_INITIALIZATION_FAILED #
Creation of a zlib object failed due to incorrect configuration.
History
Max header size in http_parser was set to 8 KiB.
Too much HTTP header data was received. In order to protect against malicious or malconfigured clients, if more than 8 KiB of HTTP header data is received then HTTP parsing will abort without a request or response object being created, and an Error with this code will be emitted.
HPE_UNEXPECTED_CONTENT_LENGTH #
Server is sending both a Content-Length header and Transfer-Encoding: chunked .
Transfer-Encoding: chunked allows the server to maintain an HTTP persistent connection for dynamically generated content. In this case, the Content-Length HTTP header cannot be used.
Use Content-Length or Transfer-Encoding: chunked .
MODULE_NOT_FOUND #
History
Version | Changes |
---|---|
v11.4.0, v10.15.0 |
Added requireStack property.
A module file could not be resolved by the CommonJS modules loader while attempting a require() operation or when loading the program entry point.
Legacy Node.js error codes #
ERR_CANNOT_TRANSFER_OBJECT #
The value passed to postMessage() contained an object that is not supported for transferring.
ERR_CRYPTO_HASH_DIGEST_NO_UTF16 #
The UTF-16 encoding was used with hash.digest() . While the hash.digest() method does allow an encoding argument to be passed in, causing the method to return a string rather than a Buffer , the UTF-16 encoding (e.g. ucs or utf16le ) is not supported.
ERR_HTTP2_FRAME_ERROR #
Used when a failure occurs sending an individual frame on the HTTP/2 session.
Used when an HTTP/2 Headers Object is expected.
Used when a required header is missing in an HTTP/2 message.
HTTP/2 informational headers must only be sent prior to calling the Http2Stream.prototype.respond() method.
ERR_HTTP2_STREAM_CLOSED #
Used when an action has been performed on an HTTP/2 Stream that has already been closed.
ERR_HTTP_INVALID_CHAR #
Used when an invalid character is found in an HTTP response status message (reason phrase).
ERR_INDEX_OUT_OF_RANGE #
A given index was out of the accepted range (e.g. negative offsets).
ERR_INVALID_OPT_VALUE #
An invalid or unexpected value was passed in an options object.
ERR_INVALID_OPT_VALUE_ENCODING #
An invalid or unknown file encoding was passed.
ERR_MISSING_MESSAGE_PORT_IN_TRANSFER_LIST #
This error code was replaced by ERR_MISSING_TRANSFERABLE_IN_TRANSFER_LIST in Node.js v15.0.0, because it is no longer accurate as other types of transferable objects also exist now.
ERR_NAPI_CONS_PROTOTYPE_OBJECT #
Used by the Node-API when Constructor.prototype is not an object.
ERR_NETWORK_IMPORT_BAD_RESPONSE #
Response was received but was invalid when importing a module over the network.
ERR_NETWORK_IMPORT_DISALLOWED #
A network module attempted to load another module that it is not allowed to load. Likely this restriction is for security reasons.
ERR_NO_LONGER_SUPPORTED #
A Node.js API was called in an unsupported manner, such as Buffer.write(string, encoding, offset[, length]) .
ERR_OPERATION_FAILED #
An operation failed. This is typically used to signal the general failure of an asynchronous operation.
ERR_OUTOFMEMORY #
Used generically to identify that an operation caused an out of memory condition.
ERR_PARSE_HISTORY_DATA #
The node:repl module was unable to parse data from the REPL history file.
ERR_SOCKET_CANNOT_SEND #
Data could not be sent on a socket.
ERR_STDERR_CLOSE #
History
Version | Changes |
---|---|
v12.0.0 |
Rather than emitting an error, process.stderr.end() now only closes the stream side but not the underlying resource, making this error obsolete.
Removed in: v10.12.0
An attempt was made to close the process.stderr stream. By design, Node.js does not allow stdout or stderr streams to be closed by user code.
ERR_STDOUT_CLOSE #
History
Version | Changes |
---|---|
v10.12.0 |
Rather than emitting an error, process.stderr.end() now only closes the stream side but not the underlying resource, making this error obsolete.
Removed in: v10.12.0
An attempt was made to close the process.stdout stream. By design, Node.js does not allow stdout or stderr streams to be closed by user code.
ERR_STREAM_READ_NOT_IMPLEMENTED #
Used when an attempt is made to use a readable stream that has not implemented readable._read() .
ERR_TLS_RENEGOTIATION_FAILED #
Used when a TLS renegotiation request has failed in a non-specific way.
ERR_TRANSFERRING_EXTERNALIZED_SHAREDARRAYBUFFER #
A SharedArrayBuffer whose memory is not managed by the JavaScript engine or by Node.js was encountered during serialization. Such a SharedArrayBuffer cannot be serialized.
This can only happen when native addons create SharedArrayBuffer s in «externalized» mode, or put existing SharedArrayBuffer into externalized mode.
ERR_UNKNOWN_STDIN_TYPE #
An attempt was made to launch a Node.js process with an unknown stdin file type. This error is usually an indication of a bug within Node.js itself, although it is possible for user code to trigger it.
ERR_UNKNOWN_STREAM_TYPE #
An attempt was made to launch a Node.js process with an unknown stdout or stderr file type. This error is usually an indication of a bug within Node.js itself, although it is possible for user code to trigger it.
ERR_V8BREAKITERATOR #
The V8 BreakIterator API was used but the full ICU data set is not installed.
ERR_VALUE_OUT_OF_RANGE #
Used when a given value is out of the accepted range.
ERR_VM_MODULE_NOT_LINKED #
The module must be successfully linked before instantiation.
ERR_VM_MODULE_LINKING_ERRORED #
The linker function returned a module for which linking has failed.
ERR_WORKER_UNSUPPORTED_EXTENSION #
The pathname used for the main script of a worker has an unknown file extension.
ERR_ZLIB_BINDING_CLOSED #
Used when an attempt is made to use a zlib object after it has already been closed.
Источник
Adblock
detector
Version | Changes |
---|---|
v10.12.0 |
Knowing how to manage errors is important part of programming. This tutorial will give you an easy introduction to error handling in JavaScript. You will learn about two types of errors and how to handle each. You will also learn how to use try...catch
and throw
statements to make your code safer and much more.
Two main types of errors
When it comes to error handling in JavaScript there are two types of errors you can stumble upon. The first type of errors are syntax errors. The second type are runtime errors.
Syntax errors
Syntax errors are also called parsing errors. This is errors occur when JavaScript parser interprets your code. When one of these errors occurs it only affect the code that in the same thread. The rest of code is left unaffected. An example of syntax error can be forgotten opening or closing parenthesis or bracket.
Another example can be missing coma or colon in object. Any of these errors will cause the syntax to be invalid and break your program. There are some ways to avoid these types of errors. One is checking your code and looking for them. This is not effective and can take a lot of time.
Another option is using some tool or IDE plugin. These tools will automatically scan your code and look for any syntax issues for you. Three most popular tools that will help you catch syntax errors are eslint, jshint and jslint. Eslint is my favorite. I use in almost all my projects.
These tools are so popular, and developers don’t like repetitive tasks. This makes it likely there is a plugin for each of these tools you can install in IDE you are using. If you find some I highly recommend installing it and using it. It can save you a lot of headaches.
Runtime errors
The second type of errors are runtime errors. These errors are also called exceptions. These errors occur during execution of your code, when you run it. One simple example can be calling a method that doesn’t exist. Another can be passing string to a function instead of number, or the other way around.
Important is that each of these errors is valid in the view of JavaScript. Yes, you may misspell some variable or function name. However, the syntax itself is still valid. There are no missing colons or brackets. If this is true JavaScript will let your code compile. You run into these errors only when you run your code.
This is also what makes runtime errors more difficult to handle. It is also why it is a very good idea to write and also run unit tests. Aside to that, there is no plugin that would help you spot these errors before they occur. Well, this is true only partially. You can use a JavaScript superset, such as TypeScript.
If your IDE has support for one of these supersets, it will help you detect runtime errors. For example, when you use TypeScript in VS Code it will warn you when some function or variable you want to use is undefined. It will also suggest methods and variables you previously defined while you write your code.
Aside to this, there are some JavaScript built-in tools that will make error handling easier for you. Let’s take a look at these tools.
Error handling and try…catch statement
The first tool for error handling is a try...catch
statement. This statement might look similar to if...else
statement. It also contains two blocks of code, wrapped with curly braces. However, there are no parenthesis before the first block, the try
block. This try
block contains the code you want to try to run.
try {
// some code
}
That said, your whole code doesn’t have to be defined in one giant try
block. Instead, you put into the try
block only what you want to run. For example, let’s say you want to declare some function. You can declare this function somewhere outside the try
block, but you invoke the function inside it.
// Declare function outside try block
function myFunction() {
// do something
}
// Create try block
try {
// And invoke the function inside it
myFunction()
}
Catch
When you do this, the try
block will call that function. If your function runs without any errors nothing will happen. If there are some runtime errors? This is where catch
block comes into play. The catch
block looks similar to try
. One difference is that there are parenthesis after the catch
keyword and before opening curly brace.
Inside these parenthesis is defined one parameter. This parameter is an error object. This object contains information about the error that occurred. It contains name of the error, the error message and current call stack. The catch
block is a place where you define what to do when an error occurs.
// Create try...catch statement
try {
// Run some code
}
catch(error) { // error is the error object, you can use a different name
// Do something when an error occurs
}
// Example:
// Create try...catch statement
try {
// Try to invoke function that doesn't exist
myFunc()
}
catch(error) {
console.log('Error name: ', error.name)
console.log('Error message: ', error.message)
console.log('Error stack: ', error.stack)
console.log('Error: ', error)
}
// Outputs:
// 'Error name: ' 'ReferenceError'
// 'Error message: ' 'myFunction is not defined'
// 'Error stack: ' `ReferenceError: myFunction is not defined
// at eval (eval at <anonymous> (:7:47), <anonymous>:4:3)
// at <anonymous>:7:47
// at <anonymous>:15:9`
// ...
// 'Error: ' ReferenceError: myFunction is not defined
// at eval (eval at <anonymous> (:7:47), <anonymous>:4:3)
// at <anonymous>:7:47
// at <anonymous>:16:9
// ...
The parenthesis and error object after the catch
keyword, and before opening curly brace, are optional. It is used to pass the information about error. If you don’t want to use these information, you can omit both, the parenthesis and error object. The try...catch
statement will still work.
// Create try...catch statement
try {
// Try to invoke function that doesn't exist
myFunction()
}
catch { // Omit parenthesis and error object
// Show some custom error message
console.log('An error occurred.')
}
// Outputs:
// 'An error occurred.'
Try, catch and control
The code inside catch
block is execute immediately when some runtime error occurs. This is important remember. If some code you execute in try
block leads to an error any code that follows, inside the same try
block, will not be execute. The catch
block will automatically assume control and processes the error.
// Create function that leads to an error
function myFuncWithError() {
throw 'Error'
}
// Create another function that doesn't lead to an error
function myFunc() {
console.log('Hello.')
}
// Create try...catch statement
try {
// Invoke the myFuncWithError function
// If this function causes error...
myFuncWithError()
// Invoke the myFunc function
// ...this function will never be invoked
myFunc()
}
catch(error) {
// Log any error message
console.log(error)
}
// Outputs:
// 'Error'
// Note:
// Only myFuncWithError() function was invoked
// then control shifted to catch block
// and myFunc() function was never invoked
Using multiple try…catch statements
There is a way to fix this. In JavaScript, there is no limit to how many try...catch
statements you can use. There is also no rule that you have to use one for all your code. If anything, you should actually do the opposite. Using multiple try...catch
statements allows you to isolate errors and not let it affect the rest of your code.
If you want to invoke both functions, the easiest thing you can do is to create two try...catch
statements. Then, you can invoke one function in the first statement and another function in the second.
// Create function that leads to an error
function myFuncWithError() {
throw 'Error'
}
// Create another function that doesn't lead to an error
function myFunc() {
console.log('Hello.')
}
// Create first try...catch statement
try {
// Invoke the myFuncWithError function
myFuncWithError()
}
catch(error) {
// Log any error message
console.log(error)
}
// Create second try...catch statement
try {
// Invoke the myFunc function
myFunc()
}
catch(error) {
// Log any error message
console.log(error)
}
// Outputs:
// 'Error'
// 'Hello.'
// Note: both functions were successfully invoked
// because error that occurred in the first
// was caught by the first try...catch statement
// and had no effect on the second function
The example would work with any number of function, or code, you want to invoke or execute. You could create tens or more try...catch
statements each to handle one specific use case. Then, any error that would occur would not affect the rest of your code, invoked or executed in other try...catch
statements.
As you can see, the try...catch
statement is very powerful tool for error handling. It allows you to run pieces of your code without letting it crash other pieces, or your whole application. That said, there is more.
Finally
The try...catch
statement can help you make error handling easy. However, there is also finally
block you can use. The try
invokes the code inside the block. The catch
is invoked when error occurs. The finally
is invoked at the end of each try...catch...finally
statement.
The important thing is that the finally
is invoked in all cases. It doesn’t matter if there is an error or not. The finally
will be invoked. This can be useful when you do something at the end of each block. The syntax of finally
is the same as the syntax for try
.
There is the finally
keyword followed by block of code to execute wrapped with curly braces. There are no parenthesis, even optional.
// Create try...catch...finally statement
try {
// Run some code
}
catch(err) {
// Log any error message
console.log(err)
}
finally {
// Do something whether is an error or not
}
// Example:
try {
// Try to invoke non-existing function
myFunc()
}
catch(err) {
// Log any error message
console.log(err.message)
}
finally {
// Log a message at the end of execution of the try...catch...finally statement
console.log('The end of try...catch...finally statement.')
}
// Outputs:
// 'myFunc is not defined'
// 'The end of try...catch...finally statement.'
Somewhat optional catch
So far, we always did error handling using all blocks of try...catch
or try...catch...finally
statement. One thing you should know is that the catch
is, similarly to the finally
, also optional. Having said that, that doesn’t mean it is a good idea to omit it.
When you omit the catch
block any error that occurs during execution of try
block will “leak” outside. Without the catch
block, there is nothing that catch any error and process it. So, can you omit it? Yes. You can use only try
or try...finally
. Both, will works. However, no errors will be caught.
// Create try statement
try {
myFunc()
}
// Create try...finally statement
try {
myFunc()
}
finally {
console.log('try...finally is finished.')
}
Try…catch statement inside functions
All previous show error handling sing try...catch
in a global scope, outside any functions. This doesn’t mean try...catch
statement is restricted to global scope. It is not. You can use in a global scope or a local scope, created by a function for example. It will work just as well.
// Declare new function that takes one parameter
function myFunction(name) {
// Add try...catch statement
try {
// If value passed as name parameter is not a string
if (typeof name !== 'string') {
// Throw a TypeError
throw new TypeError('The name value of parameter must be a string!')
} else {
console.log(`Hello ${name}.`)
}
}
catch(err) {
// Log
console.log(err)
}
}
myFunction(11)
// Outputs:
// TypeError: The name value of parameter must be a string!
// at myFunction (eval at <anonymous> (:7:47), <anonymous>:6:13)
// at eval (eval at <anonymous> (:7:47), <anonymous>:13:1)
// at <anonymous>:7:47
// at <anonymous>:19:23
// ...
myFunction('Jack')
// Outputs:
// 'Hello Jack.'
Creating and throwing errors
For error handling you can use either built-in JavaScript errors or you can define your own. With both approaches, you will use throw
statement. This statement specifies the value you want to throw as an error. You already used this statement in example in the “Try, catch and control” section, inside the declaration myFuncWithError() function
.
Creating simple errors
Let’s take a look at the first way to create a custom error. This will be a very simple error. You will do it by using throw
statement with a string, number or any other data type. For example, let’s create a simple function that when you invoke it it will throw a custom error. This custom error will be a string.
// Create function
function myFunc() {
// Throw a custom error
throw 'My custom error.'
}
// Create try...catch statement
try {
// Invoke the myFunc() function
myFunc()
}
catch(err) {
// Log the error
console.log('Error: ', err)
console.log('Error name: ', err.name)
console.log('Error message: ', err.message)
console.log('Error stack: ', err.stack)
}
// Outputs:
// 'Error: ' 'My custom error.'
// 'Error name: ' undefined
// 'Error message: ' undefined
// 'Error stack: ' undefined
As you can see, creating a simple error is easy. The downside of creating errors this way is that these custom errors will not have name
, message
and stack
properties. There is a way to fix this. A simple way to do it is by using an object instead of a primitive data type.
So, instead of throwing a string or other primitive, you will throw an object. Inside this object, you will define all the properties that would normally exist in an error object, the name
, message
and stack
. Now, when this custom error occurs you can also access its name
, message
and stack
.
// Create function
function myFunc() {
// Throw a custom error object
throw {
name: 'MyCustomError',
message: 'An error occurred.',
stack: 'myFunc()'
}
}
try {
// Invoke the myFunc() function
myFunc()
}
catch(err) {
// Log the error
console.log('Error: ', err)
console.log('Error name: ', err.name)
console.log('Error message: ', err.message)
console.log('Error stack: ', err.stack)
}
// Outputs:
// 'Error: ' {
// name: 'MyCustomError',
// message: 'An error occurred.',
// stack: 'myFunc()'
// }
// 'Error name: ' 'MyCustomError'
// 'Error message: ' 'An error occurred.'
// 'Error stack: ' 'myFunc()'
Creating errors with JavaScript built-in error constructors
Another option for creating new errors is by using JavaScript built-in error constructors, such as Error
, TypeError
, ReferenceError
, SyntaxError
, RangeError
, EvalError
, InternalError
and URIError
. You will use throw
statement to throw these custom errors as well. You will also have to use keyword new
along with one the constructor’s names.
The new
keyword says that you are creating a new instance of a constructor. In this case, some error constructor. When you use one of these constructors the name
property inside the error
object will be the constructor you used. The message
will be the string you pass as an argument when you instantiate the constructor.
// Create function
function myFunc() {
// Throw a custom error using Error constructor
// The Error will be the "name" property in error object
// The 'An error occurred.' will be the "message" property in error object
throw new Error('An error occurred.')
}
try {
myFunc()
}
catch(err) {
console.log('Error: ', err)
console.log('Error name: ', err.name)
console.log('Error message: ', err.message)
console.log('Error stack: ', err.stack)
}
// Outputs:
// 'Error: ' Error: An error occurred.
// at myFunc (eval at <anonymous> (:7:47), <anonymous>:4:9)
// at eval (eval at <anonymous> (:7:47), <anonymous>:8:3)
// at <anonymous>:7:47
// at <anonymous>:20:9
// ...
// 'Error name: ' 'Error'
// 'Error message: ' 'An error occurred.'
// 'Error stack: ' `Error: An error occurred.
// at myFunc (eval at <anonymous> (:7:47), <anonymous>:4:9)
// at eval (eval at <anonymous> (:7:47), <anonymous>:8:3)
// at <anonymous>:7:47
Creating custom errors with Function constructor and class
Along with JavaScript built-in error constructors you can also create custom errors with Function constructor or class. Here is how. You have to use function constructor to create a new custom error. This function constructor will take one parameter when you use it. This will be the error message.
Inside this constructor, you will add three properties, name
, message
and stack
. The name
property will contain the name of your custom error. The message
will refer to the value passed as message
parameter. The stack
will use stack
property from newly instantiated Error
constructor.
When you have this you have to set the prototype
property of this new Function constructor to error constructor. Finally, you also have to set the constructor
property of the Function constructor under prototype
property to the Function constructor. When you have this, you use throw
and new
statements to create new errors based on your custom error constructor.
// Create new custom error using Function constructor
const MyCustomError = function(message) {
// Add name property with some custom name
this.name = 'MyCustomError'
// Add message property referencing the value passed as "message" parameter
this.message = message
// Add stack property from Error constructor
this.stack = (new Error()).stack
}
// Set "prototype" property of custom error constructor to Error constructor
MyCustomError.prototype = new Error()
// Set the "constructor" property of custom error constructor to the custom error constructor
MyCustomError.prototype.constructor = MyCustomError
// Usage:
// Create function
function myFunc() {
// Use custom error constructor to create new error
throw new MyCustomError('An error occurred.')
}
// Create try...catch statement
try {
// Invoke function with custom error
myFunc()
}
catch(err) {
// Log error data
console.log('Error: ', err)
console.log('Error name: ', err.name)
console.log('Error message: ', err.message)
console.log('Error stack: ', err.stack)
}
// Outputs:
// 'Error: ' Error
// at new MyCustomError (eval at <anonymous> (:7:47), <anonymous>:6:16)
// at myFunc (eval at <anonymous> (:7:47), <anonymous>:13:9)
// at eval (eval at <anonymous> (:7:47), <anonymous>:17:3)
// at <anonymous>:7:47
// at <anonymous>:26:9
// ...
// 'Error name: ' 'MyCustomError'
// 'Error message: ' 'An error occurred.'
// 'Error stack: ' `Error
// at new MyCustomError (eval at <anonymous> (:7:47), <anonymous>:6:16)
// at myFunc (eval at <anonymous> (:7:47), <anonymous>:13:9)
// at eval (eval at <anonymous> (:7:47), <anonymous>:17:3)
// at <anonymous>:7:47
// at <anonymous>:28:9
// ...
With JavaScript class creating custom error constructor is even easier. First, you have to create new class for your custom error constructor. This class will extend
the Error
class. Inside the class, you will add constructor
with one parameter. This will be the error message.
Inside the constructor
, you have to call super
with message
passed as argument. This will call the constructor of parent class Error
. After that, still inside the constructor
, you will override the name
property by adding your own name
property with name for your custom constructor.
// Create new error constructor with JavaScript class
class MyCustomError extends Error {
constructor(message) {
// Call constructor of parent class Error
super(message)
// Set your custom error name
this.name = 'MyCustomError'
}
}
// Create try...catch statement
try {
// Throw new custom error
throw new MyCustomError('An error occurred')
}
catch(err) {
console.log('Error name: ', err.name)
console.log('Error message: ', err.message)
console.log('Error stack: ', err.stack)
}
// Outputs:
// 'Error name: ' 'MyCustomError'
// 'Error message: ' 'An error occurred'
// 'Error stack: ' `MyCustomError: An error occurred
// at eval (eval at <anonymous> (:7:47), <anonymous>:12:9)
// at <anonymous>:7:47
// at <anonymous>:23:9
// ...
Error handling globally
The try...catch
and try...catch...finally
statements are powerful. These two can make error handling very easy. One problem might be if you can’t isolate code you want to execute with try
block. For example, when some code is executed in a global scope from a place where you cannot access it.
In this case, you can use onerror()
method. This is an error event handler. You can use it to catch and process errors occurring in a global scope. Aside to window
object you can also use it with elements in the DOM. Alternatively, you can attach new event listener for error
event, either on window
or some element.
// Option no.1: onerror() method
window.onerror = function(message, url, lineNumber, columnNumber, error) {
console.log(`
error message: ${message},
error URL: ${url},
line with error: ${lineNumber},
column with error: ${columnNumber}
`)
}
// Option no.2: listening to 'error' event
window.addEventListener('error', function(event) {
console.log(`
error message: ${event.message},
error URL: ${event.filename},
line with error: ${event.lineno},
column with error: ${event.colno},
error object: ${JSON.stringify(event.error)}
`)
})
Conclusion: Error Handling in JavaScript
Congratulations! You’ve just finished this tutorial on error handling in JavaScript. I hope you enjoyed it. If you’ve followed along with me you should have a good idea about how to handle errors in JavaScript. You should know what are syntax and runtime errors and what is the difference between them.
You should also know how try...catch
statement, and Finally
, works, and how to use it execute your code, and catch any errors that occur. You also know how to throw JavaScript built-in errors. Not only that. You also know how to create your own errors with primitives, function constructors and JavaScript classes.
And, if some error occurs in a global scope, you know how to use onerror()
method or error event listener to catch it. Now it is up to you to take what you’ve learned in this tutorial about error handling and use it to write better and safer code.
If you liked this article, please subscribe so you don’t miss any future post.
If you’d like to support me and this blog, you can become a patron, or you can buy me a coffee 🙂
Become a Patron
PayPal icon
Donate via Paypal