Время на прочтение
5 мин
Количество просмотров 396K
JavaScript может быть кошмаром при отладке: некоторые ошибки, которые он выдает, могут быть очень трудны для понимания с первого взгляда, и выдаваемые номера строк также не всегда полезны. Разве не было бы полезно иметь список, глядя на который, можно понять смысл ошибок и как исправить их? Вот он!
Ниже представлен список странных ошибок в JavaScript. Разные браузеры могут выдавать разные сообщения об одинаковых ошибках, поэтому приведено несколько примеров там, где возможно.
Как читать ошибки?
Перед самим списком, давайте быстро взглянем на структуру сообщения об ошибке. Понимание структуры помогает понимать ошибки, и вы получите меньше проблем, если наткнетесь на ошибки, не представленные в этом списке.
Типичная ошибка из Chrome выглядит так:
Uncaught TypeError: undefined is not a function
Структура ошибки следующая:
- Uncaught TypeError: эта часть сообщения обычно не особо полезна.
Uncaught
значит, что ошибка не была перехвачена вcatch
, аTypeError
— это название ошибки. - undefined is not a function: это та самая часть про ошибку. В случае с сообщениями об ошибках, читать их нужно прямо буквально. Например, в этом случае, она значит то, что код попытался использовать значение
undefined
как функцию.
Другие webkit-браузеры, такие как Safari, выдают ошибки примерно в таком же формате, как и Chrome. Ошибки из Firefox похожи, но не всегда включают в себя первую часть, и последние версии Internet Explorer также выдают более простые ошибки, но в этом случае проще — не всегда значит лучше.
Теперь к самим ошибкам.
Uncaught TypeError: undefined is not a function
Связанные ошибки: number is not a function, object is not a function, string is not a function, Unhandled Error: ‘foo’ is not a function, Function Expected
Возникает при попытке вызова значения как функции, когда значение функцией не является. Например:
var foo = undefined;
foo();
Эта ошибка обычно возникает, если вы пытаетесь вызвать функцию для объекта, но опечатались в названии.
var x = document.getElementByID('foo');
Несуществующие свойства объекта по-умолчанию имеют значение undefined
, что приводит к этой ошибке.
Другие вариации, такие как “number is not a function” возникают при попытке вызвать число, как будто оно является функцией.
Как исправить ошибку: убедитесь в корректности имени функции. Для этой ошибки, номер строки обычно указывает в правильное место.
Uncaught ReferenceError: Invalid left-hand side in assignment
Связанные ошибки: Uncaught exception: ReferenceError: Cannot assign to ‘functionCall()’, Uncaught exception: ReferenceError: Cannot assign to ‘this’
Вызвано попыткой присвоить значение тому, чему невозможно присвоить значение.
Наиболее частый пример этой ошибки — это условие в if:
if(doSomething() = 'somevalue')
В этом примере программист случайно использовал один знак равенства вместо двух. Выражение “left-hand side in assignment” относится к левой части знака равенства, а, как можно видеть в данном примере, левая часть содержит что-то, чему нельзя присвоить значение, что и приводит к ошибке.
Как исправить ошибку: убедитесь, что вы не пытаетесь присвоить значение результату функции или ключевому слову this
.
Uncaught TypeError: Converting circular structure to JSON
Связанные ошибки: Uncaught exception: TypeError: JSON.stringify: Not an acyclic Object, TypeError: cyclic object value, Circular reference in value argument not supported
Всегда вызвано циклической ссылкой в объекте, которая потом передается в JSON.stringify
.
var a = { };
var b = { a: a };
a.b = b;
JSON.stringify(a);
Так как a
и b
в примере выше имеют ссылки друг на друга, результирующий объект не может быть приведен к JSON.
Как исправить ошибку: удалите циклические ссылки, как в примере выше, из всех объектов, которые вы хотите сконвертировать в JSON.
Unexpected token ;
Связанные ошибки: Expected ), missing ) after argument list
Интерпретатор JavaScript что-то ожидал, но не обнаружил там этого. Обычно вызвано пропущенными фигурными, круглыми или квадратными скобками.
Токен в данной ошибке может быть разным — может быть написано “Unexpected token ]”, “Expected {” или что-то еще.
Как исправить ошибку: иногда номер строки не указывает на правильное местоположение, что затрудняет исправление ошибки.
Ошибка с [ ] { } ( ) обычно вызвано несовпадающей парой. Проверьте, все ли ваши скобки имеют закрывающую пару. В этом случае, номер строки обычно указывает на что-то другое, а не на проблемный символ.
Unexpected / связано с регулярными выражениями. Номер строки для данного случая обычно правильный.
Unexpected; обычно вызвано символом; внутри литерала объекта или массива, или списка аргументов вызова функции. Номер строки обычно также будет верным для данного случая.
Uncaught SyntaxError: Unexpected token ILLEGAL
Связанные ошибки: Unterminated String Literal, Invalid Line Terminator
В строковом литерале пропущена закрывающая кавычка.
Как исправить ошибку: убедитесь, что все строки имеют правильные закрывающие кавычки.
Uncaught TypeError: Cannot read property ‘foo’ of null, Uncaught TypeError: Cannot read property ‘foo’ of undefined
Связанные ошибки: TypeError: someVal is null, Unable to get property ‘foo’ of undefined or null reference
Попытка прочитать null
или undefined
так, как будто это объект. Например:
var someVal = null;
console.log(someVal.foo);
Как исправить ошибку: обычно вызвано опечатками. Проверьте, все ли переменные, использованные рядом со строкой, указывающей на ошибку, правильно названы.
Uncaught TypeError: Cannot set property ‘foo’ of null, Uncaught TypeError: Cannot set property ‘foo’ of undefined
Связанные ошибки: TypeError: someVal is undefined, Unable to set property ‘foo’ of undefined or null reference
Попытка записать null
или undefined
так, как будто это объект. Например:
var someVal = null;
someVal.foo = 1;
Как исправить ошибку: это тоже обычно вызвано ошибками. Проверьте имена переменных рядом со строкой, указывающей на ошибку.
Uncaught RangeError: Maximum call stack size exceeded
Связанные ошибки: Uncaught exception: RangeError: Maximum recursion depth exceeded, too much recursion, Stack overflow
Обычно вызвано неправильно программной логикой, что приводит к бесконечному вызову рекурсивной функции.
Как исправить ошибку: проверьте рекурсивные функции на ошибки, которые могут вынудить их делать рекурсивные вызовы вечно.
Uncaught URIError: URI malformed
Связанные ошибки: URIError: malformed URI sequence
Вызвано некорректным вызовом decodeURIComponent
.
Как исправить ошибку: убедитесь, что вызовы decodeURIComponent на строке ошибки получают корректные входные данные.
XMLHttpRequest cannot load some/url. No ‘Access-Control-Allow-Origin’ header is present on the requested resource
Связанные ошибки: Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at some/url
Эта проблема всегда связана с использованием XMLHttpRequest.
Как исправить ошибку: убедитесь в корректности запрашиваемого URL и в том, что он удовлетворяет same-origin policy. Хороший способ найти проблемный код — посмотреть на URL в сообщении ошибки и найти его в своём коде.
InvalidStateError: An attempt was made to use an object that is not, or is no longer, usable
Связанные ошибки: InvalidStateError, DOMException code 11
Означает то, что код вызвал функцию, которую нельзя было вызывать в текущем состоянии. Обычно связано c XMLHttpRequest
при попытке вызвать на нём функции до его готовности.
var xhr = new XMLHttpRequest();
xhr.setRequestHeader('Some-Header', 'val');
В данном случае вы получите ошибку потому, что функция setRequestHeader
может быть вызвана только после вызова xhr.open
.
Как исправить ошибку: посмотрите на код в строке, указывающей на ошибку, и убедитесь, что он вызывается в правильный момент или добавляет нужные вызовы до этого (как с xhr.open
).
Заключение
JavaScript содержит в себе одни из самых бесполезных ошибок, которые я когда-либо видел, за исключением печально известной Expected T_PAAMAYIM_NEKUDOTAYIM
в PHP. Большая ознакомленность с ошибками привносит больше ясности. Современные браузеры тоже помогают, так как больше не выдают абсолютно бесполезные ошибки, как это было раньше.
Какие самые непонятные ошибки вы встречали? Делитесь своими наблюдениями в комментариях.
P.S. Этот перевод можно улучшить, отправив PR здесь.
I was trying to clean up this react component by extracting fillCalendar()
from being a method of the component into it’s own js file and importing it instead. Originally this.state.datesArray was set in a componentWillMount() lifecycle method. Now I’m trying to directly initialize it inside the constructor because this is what the react docs recommends. Doing it this way now throws a “TypeError: Object(…) is not a function” error and I don’t know why. Here is what Calendar.js use to look like see here.
Calendar.js
import React, { Component } from 'react';
import { fillCalendar } from '../calendar.tools'
class Calendar extends Component {
constructor(props) {
super(props)
this.state = {
datesArray: fillCalendar(7, 2018),
date: new Date(),
monthIsOffset: false,
monthOffset: new Date().getMonth(),
yearOffset: new Date().getFullYear()
}
}
render() {
return (
...
)
}
}
calendar.tools.js
let fillCalendar = (month, year) => {
let datesArray = []
let monthStart = new Date(year,month,1).getDay()
let yearType = false;
let filledNodes = 0;
// Check for leap year
(year%4 === 0) ?
(year%100 === 0) ?
(year%400) ? yearType = true : yearType = false :
yearType = true :
yearType = false
const monthArrays = yearType ? [31,29,31,30,31,30,31,31,30,31,30,31] : [31,28,31,30,31,30,31,31,30,31,30,31]
if (month === 0) { month = 12; }
let leadDayStart = monthArrays[month-1] - monthStart + 1
// Loop out lead date numbers
for (let i = 0; i < monthStart; i++) {
datesArray.push({date: leadDayStart, type: "leadDate", id: "leadDate" + i})
leadDayStart++
filledNodes++
}
if (month === 12) { month = 0; }
// Loop out month's date numbers
for (let i = 0; i < monthArrays[month]; i++) {
datesArray.push({date: i + 1, type: "monthDate", id: "monthDate" + i})
filledNodes++
}
// fill the empty remaining cells in the calendar
let remainingNodes = 42 - filledNodes;
for (let i = 0; i < remainingNodes; i++) {
datesArray.push({date: i + 1, type: "postDate", id: "postDate" + i})
}
return datesArray
}
The Javascript error TypeError: "x" is not a function
occurs when there is an attempt to call a function on a value or object, which is not actually a function.
Error message:
TypeError: "x" is not a function
Error Type:
TypeError
What Causes TypeError: “x” is not a function
A TypeError: "x" is not a function
in Javascript generally occurs in one of the following scenarios:
- A typographical error in a function call.
- Missing script library.
- When a function is called on a property that is not actually a function.
- A
TypeError: "x" is not a function
occurs when a function is called on an object that does not contain the called function. - When calling a built-in function that expects a callback function argument, which does not exist.
- When the called function is within a scope that is not accessible
TypeError: “x” is not a function Examples
1. Typo
A typical scenario for the TypeError: "x" is not a function
to occur is when there is a typo in the called function name:
var elem = document.getElementByID('ID');
Running the above code leads to the following Javascript error:
TypeError: document.getElementByID is not a function
The correct function name is getElementById()
:
var elem = document.getElementById('ID');
2. Object Does Not Contain Function
Another common cause for the TypeError: "x" is not a function
is when a function is called an object that does not actually contain the function:
var foo = {
bar: function() {
console.log("bar called");
}
};
foo.baz();
In the above example, the foo
object contains a function bar()
. However, the above code attempts to call the function baz()
, which foo
does not contain. Running the above code leads to the following Uncaught TypeError: "x" is not a function
:
Uncaught TypeError: foo.baz is not a function
If the Javascript code is modified to call the correct function bar()
:
var foo = {
bar: function() {
console.log("bar called");
}
};
foo.bar();
The correct output is produced:
bar called
How to Fix Javascript TypeError: “x” is not a function
The TypeError: "x" is not a function
can be fixed using the following suggestions:
- Paying attention to detail in code and minimizing typos.
- Importing the correct and relevant script libraries used in code.
- Making sure the called property of an object is actually a function.
- Making sure objects contain the called function to avoid
TypeError: "x" is not a function
. - Making sure functions passed in as callbacks do exist.
- Making sure called functions are within the correct and accessible scope.
Track, Analyze and Manage Errors With Rollbar
Managing errors and exceptions in your code is challenging. It can make deploying production code an unnerving experience. Being able to track, analyze, and manage errors in real-time can help you to proceed with more confidence. Rollbar automates error monitoring and triaging, making fixing Javascript errors easier than ever. Sign Up Today!
Do you want to request a feature or report a bug?
Bug 🐛🐛 (May be 🤔🙄)
What is the current behaviour?
I have created react functional component and implement state full logic using useState
method but it throws an TypeError: Object(...) is not a function
Which versions of React, and which browser / OS are affected by this issue? Did this work in previous versions of React?
Installed packages
"dependencies": { "@reach/router": "^1.2.1", "formik": "^1.4.1", "prop-types": "^15.6.2", "react": "^16.7.0-alpha.2", "react-dom": "^16.7.0-alpha.2", "react-scripts": "2.1.1", "styled-components": "^4.1.3", "yup": "^0.26.6" },
Github repository : https://github.com/sagar-gavhane/workbench-client
Website: https://wonderful-allen-a3058d.netlify.com/
Screenshot:
@sagar-gavhane you got a few glitches in your project setup.
/src/components/Input/input.js
Line 1 should be
import Input from ‘./Input.jsx’
/src/screens/auth/Login/Login.jsx
Line 1 should be
import Input from ‘../../../components/Input/input.js’
and in package.json
use
“react”: “next”,
“react-dom”: “next”,
You should be good after that.
Wopliieee, Rostislav-Poleshko, andrewaarestad, shivaniarbat, khaza593, cmgonzales, RyRy79261, bougieL, casssiahaluu, mohamad11badrah, and 7 more reacted with thumbs down emoji
14702, anaschoudharytj, and gourdeepali reacted with laugh emoji
14702 reacted with hooray emoji
bengrunfeld, mikemfleming, khaza593, waqaramjad, 14702, NISHITdp, and vinay-gaddam reacted with heart emoji
I ran into this issue as well because somehow I assumed that Hooks moved into 16.7.0-alpha.2
. But I had to use next
instead. Thanks @nikilok
alfonmga, WillSquire, sagar-gavhane, khaza593, and spideep reacted with heart emoji
Had to use next
instead of 16.7.0-alpha.2
also, is this expected behaviour?
Really wanted a specific version in package.json
instead of next
.
Hey guys! How are you using next
to use hooks? FB says they aren’t even releasing yet and that it will be a few months, read here. currently I am using 16.7.0-alpha.2
and I still get the error.
@ctur can tell you didn’t read the question.
killpowa
added a commit
to gorilla-devs/GDLauncher
that referenced
this issue
Jan 5, 2019
FYI – using 16.7.0-alpha.2
should work as an entry into the package.json
. However, in my experience, only when I changed the entry to next
(per the advice above), did the error go away.
Note, I also deleted my yarn.lock
and node_modules
for good measure.
Both 16.7.0-alpha.2
and next
(which we’ve fixed to point to it) should work.
bengrunfeld and hughesmatias reacted with heart emoji
(But 16.8 is the first stable version to have Hooks)
I just started getting this error in production. It doesn’t happen in development, though. I’m using 16.8.x. Can anyone shed light on what is actually causing it?
This error might happen if you use old React. It’s not even a React error — you’re calling React.useState()
, and if that doesn’t exist (such as in old versions), it’s like calling React.lalalala()
. The function doesn’t exist, so you’re calling undefined()
and it crashes.
It might also happen if you call a non-existent method on some other library.
ImedAdel reacted with heart emoji
I was getting the same erorr, but then I released I was using createState
instead of useState
Hey! came across this while having a very similar issue except ive checked all the solutions and it doesnt seem to solve the problem. I’m very new to functional paradigms and react(and even javascript), what else should i try to investigate?
I’ve got a lambda function as a component which has a body that starts off by generating some hooks. but it looks like the lambda isnt recognised, even though all my other components are lambdas too and they seem to work fine
Might help someone: Make sure you aren’t import { Foo } from 'Foo'
when you should be import Foo from 'Foo'
. That is… this error is actually pretty descriptive and you can confirm it by commenting out the erroring out code, then doing something like console.log(typeof Foo)
to see if it is an actual function or if it’s something completely different.
I have the same error and just figure it out. The problem is when you copy the code from the demo site, this line is not correct:
import { makeStyles } from '@material-ui/core/styles';
Change to this one:
import { makeStyles } from "@material-ui/styles";
Check the docs from here
try this
npm install rxjs@6.3.3 rxjs-compat@6.3.3 –save
Hey, your problem is complicated, but i could resolvet. You problem is React version. run this command: npm install react@next react-dom@next –save
Hey, your problem is complicated, but i could resolvet. You problem is React version. run this command: npm install react@next react-dom@next –save
@EdDevs2503 I tried yours but it didn’t work for me. I found out that when I tried to import { useRouter, matchPath } from ‘next/router’, the matchPath
is undefined. I’m not sure what will be the equivalent of matchPath
in next.
Hello , i have the same problem and the version of react that i am using is :
“react”: “^16.9.0”,
“react-dom”: “^16.9.0”,
How to solve this ? i tried to use the next solution and it didn’t work
@kami23 I just ran into this error. It could also be an indication that you are importing something in your component which doesn’t exist.
For me it was this – import { withNavigation } from ‘@react-navigation/web’;
This withNavigation
doesn’t exist inside the @react-navigation/web
.
I was getting the same error. It was due to importing useState from the wrong library. If you’re using >16.8 make sure you have:
import React, { useState } from 'react';
TypeError: Cannot read property ‘pxToRem’ of undefined
(anonymous function)
C:/Users/Young Akoma/Desktop/Anthony/page-app/src/Components/Explore.js:16
13 | width: ‘100%’,
14 | },
15 | heading: {
16 | fontSize: theme.typography.pxToRem(15),
| ^ 17 | flexBasis: ‘33.33%’,
18 | flexShrink: 0,
19 | },
please i really need help for this. i cant resolve it
I got the same error, but somehow sorted it well . The issue was due to the React and React- Dom versions. I was using the older versions of React and React-dom. The issue sorted when i upgraded into latest version.
Please make sure that you update both React and React-dom at the same time.
Run the below commands in cmd to upgrade React . Open your package.json and check your current react and react-dom before updating.
npm install –save react@latest
npm install –save react-dom@latest
Hey, your problem is complicated, but i could resolvet. You problem is React version. run this command: npm install react@next react-dom@next –save
This fixed the issue.
@sagar-gavhane you got a few glitches in your project setup.
/src/components/Input/input.jsLine 1 should be
import Input from ‘./Input.jsx’/src/screens/auth/Login/Login.jsx
Line 1 should be
import Input from ‘../../../components/Input/input.js’and in package.json
use
“react”: “next”,
“react-dom”: “next”,You should be good after that.
thanks @nikilok you resolved my issue but i want to know the logic behind that because i never used next in react version
thanks
…
On Wed, Oct 23, 2019 at 2:40 AM Waqar Amjad ***@***.***> wrote:
@sagar-gavhane <https://github.com/sagar-gavhane> you got a few glitches
in your project setup.
/src/components/Input/input.js
Line 1 should be
import Input from ‘./Input.jsx’
/src/screens/auth/Login/Login.jsx
Line 1 should be
import Input from ‘../../../components/Input/input.js’
and in package.json
use
“react”: “next”,
“react-dom”: “next”,
You should be good after that.
thanks @nikilok <https://github.com/nikilok> you resolved my issue but i
want to know the logic behind that because i never used next in react
version
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#14484?email_source=notifications&email_token=AMG44RYN7Z7PURDBGG54IRDQQAL2FA5CNFSM4GL526V2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOECAYC6Q#issuecomment-545358202>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AMG44R66EHA4GTZYJNEVM2DQQAL2FANCNFSM4GL526VQ>
.
I had to upgrade react-redux
, delete my node_modules
, then reinstall.
I was struggling with this for the past 2 hours. was a typo for me
import React, { useContex } from "react";`
... many lines below ...
const { projects } = useContex(AppContext);
😭
My error was trying to import useQuery
from react
instead of @apollo/react-hooks
, thanks you all!
Wow – thank you – I did the same thing 🤦
npm install ng2-charts@2.2.0 –save work for me. fine
I was using a named export instead of default and had to remove the brackets
import { useSiteMetadata } from "../hooks/useSiteMetadata"
import useSiteMetadata from "../hooks/useSiteMetadata"
have a closer look at the name of the value passed in reference to the function. Is it the same name you typed as your prop?
Need more details on your code
All these comments about how tiny typos caused all this time waste and frustration, suggest that this error could be clarified by echoing the incorrect name. @gaearon, anything that could be done in that direction, or is this a JavaScript limitation?
I am still getting the error “TypeError: Object(…) is not a function” for using the useParams from react.
"react": "^16.13.1",
"react-dom": "^16.13.1",
@atidivya Do you able to solve the issue or not ?
I had come across the same problem and what worked for me is updating the react and react-dom to the latest version.
To update to the latest version.
npm install --save react@latest
npm install --save react-dom@latest
Now my current version of react and reat-dom is
"react": "^16.13.1"
"react-dom": "^16.13.1"
I was using a named export instead of default and had to remove the brackets
import { useSiteMetadata } from "../hooks/useSiteMetadata"
import useSiteMetadata from "../hooks/useSiteMetadata"
Thanks a lot @mediamaker . This worked for my use case where I was importing a function which use React inside a NextJS project.
npm install –save react@latest
npm install –save react-dom@latest
this solved my problem .when i was using usestate and useeffect in react
facebook
locked as off-topic and limited conversation to collaborators
Sep 21, 2020
I’m going to lock this because the comments are either getting repetitive or include unrelated suggestions.
If you have this error, it means you’re importing something that doesn’t exist. It doesn’t have to do with React per se.
TypeError:”x” не является функцией
Исключение JavaScript “не является функцией” возникает,когда была попытка вызвать значение из функции,но на самом деле значение не является функцией.
Message
TypeError: "x" is not a function. (V8-based & Firefox & Safari)
Error type
Что пошло не так?
Она пыталась вызвать значение из функции,но на самом деле значение не является функцией.Какой-то код ожидает,что вы предоставите функцию,но этого не произошло.
Может, в названии функции опечатка? Может быть, объект, для которого вы вызываете метод, не имеет этой функции? Например, у Objects
JavaScript нет функции map
, но у объекта Array
JavaScript есть.
Существует множество встроенных функций,нуждающихся в функции (обратного вызова).Чтобы эти методы работали должным образом,вам необходимо предоставить функцию:
- При работе с объектами
Array
илиTypedArray
:-
Array.prototype.every()
,Array.prototype.some()
,Array.prototype.forEach()
,Array.prototype.map()
,Array.prototype.filter()
,Array.prototype.reduce()
,Array.prototype.reduceRight()
,Array.prototype.find()
-
- При работе с объектами
Map
иSet
:-
Map.prototype.forEach()
иSet.prototype.forEach()
-
Examples
Ошибка в названии функции
В этом случае,что случается слишком часто,в названии метода присутствует опечатка:
const x = document.getElementByID('foo');
Правильное имя функции – getElementById
:
const x = document.getElementById('foo');
Функция вызвана не на том объекте
Для определенных методов вы должны предоставить функцию (обратного вызова), и она будет работать только с определенными объектами. В этом примере используется Array.prototype.map()
, который работает только с объектами Array
.
const obj = { a: 13, b: 37, c: 42 }; obj.map(function (num) { return num * 2; });
Вместо этого используйте массив:
const numbers = [1, 4, 9]; numbers.map(function (num) { return num * 2; });
Функция разделяет имя с ранее существовавшей собственностью
Иногда при создании класса может быть свойство и функция с тем же именем.При вызове функции компилятор думает,что функция перестает существовать.
function Dog() { this.age = 11; this.color = "black"; this.name = "Ralph"; return this; } Dog.prototype.name = function (name) { this.name = name; return this; } const myNewDog = new Dog(); myNewDog.name("Cassidy");
Вместо этого используйте другое имя свойства:
function Dog() { this.age = 11; this.color = "black"; this.dogName = "Ralph"; return this; } Dog.prototype.name = function (name) { this.dogName = name; return this; } const myNewDog = new Dog(); myNewDog.name("Cassidy");
Использование скобок для умножения
В математике 2 × (3+5)можно записать как 2*(3+5)или просто 2(3+5).
Использование последнего приведет к ошибке:
const sixteen = 2(3 + 5); console.log(`2 x (3 + 5) is ${sixteen}`);
Вы можете исправить код, добавив оператор *
:
const sixteen = 2 * (3 + 5); console.log(`2 x (3 + 5) is ${sixteen}`);
Правильно импортируйте экспортированный модуль
Убедитесь,что вы правильно импортируете модуль.
Пример библиотеки помощников ( helpers.js
)
const helpers = function () { }; helpers.groupBy = function (objectArray, property) { return objectArray.reduce((acc, obj) => { const key = obj[property]; acc[key] ??= []; acc[key].push(obj); return acc; }, {}); } export default helpers;
Правильное использование импорта ( App.js
):
import helpers from './helpers';
See also
- Functions
JavaScript
-
RangeError:аргумент не является корректной кодовой точкой
Исключение JavaScript «Недопустимая кодовая точка» возникает, когда значения NaN, отрицательные целые числа (-1), нецелые числа (5.4) или больше 0x10FFFF (1114111)
-
TypeError: “x” не является конструктором
Исключение JavaScript «не является конструктором» возникает, когда была попытка использовать объектную переменную, но была попытка использовать объект или переменную
-
ReferenceError: «x» не определен
Исключение JavaScript «переменная не определена» возникает, когда где-то есть несуществующая ссылка.
-
RangeError:точность вне досягаемости
Исключение JavaScript «точность вне допустимого диапазона» возникает, когда число, выходящее за пределы 0 и 20 (или 21), было передано в toFixed toPrecision.