Ситуация: вы пишете скрипт, в котором объявляете новые функции или используете уже встроенные. Вы уверены, что всё правильно, потому что делали так сотни раз в других проектах, но при запуске кода появляется такая ошибка:
❌ Uncaught SyntaxError: Unexpected end of input
Что это значит: браузер ждёт от вас или от кода продолжения ввода параметров или новых значений, но не находит их и падает с ошибкой.
Когда встречается: чаще всего это значит, что вы где-то потеряли закрывающие скобки. Вторая ситуация, более редкая — вы обрабатываете JSON-запрос и вам просто не приходят нужные данные (хотя должны бы). О том, что такое JSON-запросы и ответы, будет в отдельной статье — тема слишком большая и интересная для короткого ответа. Сейчас остановимся на первом варианте.
Что делать с ошибкой Uncaught SyntaxError: Unexpected end of input
Чтобы отловить и исправить эту ошибку, вам нужно посчитать и сравнить количество открытых и закрытых скобок в программе — как круглых (), так и фигурных {}. Скорее всего, вам не хватает и того, и другого (и точки с запятой после них).
Проще всего такую ошибку найти простым форматированием кода: когда все вложенные команды и параметры сдвигаются вправо табуляцией или пробелами. В этом случае легко найти разрыв в получившейся лесенке кода и добавить туда нужные скобки. Смотрите сами:
$(function () {
$("#mewlyDiagnosed").hover(function () {
$("#mewlyDiagnosed").animate({ 'height': '237px', 'top': "-75px" });
}, function () {
$("#mewlyDiagnosed").animate({ 'height': '162px', 'top': "0px" });
});
Может показаться, что всё в порядке, но вот как выглядит этот код после форматирования:
$(function () {
$("#mewlyDiagnosed").hover(function () {
$("#mewlyDiagnosed").animate({ 'height': '237px', 'top': "-75px" });
}, function () {
$("#mewlyDiagnosed").animate({ 'height': '162px', 'top': "0px" });
});
Сразу видно, что в конце скрипта не хватает строки с )};
— если их не поставить, браузер будет ждать продолжения ввода параметров вызова функции, не дождётся их и выдаст ошибку Uncaught SyntaxError: Unexpected end of input
Попробуйте сами. Найдите ошибку в этом коде:
$(function() {
// Script to select all checkboxes
$state.on('change', function(ev) {
var $chcks = $("#example tbody input[type='checkbox']");
if($state.is(':checked')) {
$chcks.prop('checked', true).trigger('change');
}else {
$chcks.prop('checked', false).trigger('change');
});
Я использовал следующий оператор SQL как в MySQL, так и в PostgreSQL, но он не работает в PostgreSQL.
db.Query(`SELECT COUNT(*) as N FROM email WHERE address = ?`, email)
с этой ошибкой:
pq: F:"scan.l" M:"syntax error at end of input" S:"ERROR" C:"42601" P:"50" R:"scanner_yyerror" L:"993"
В чем проблема? Сообщения об ошибках в PostgreSQL очень загадочны.
4 ответы
Вы не предоставили никаких подробностей о языке/среде, но я все равно попытаюсь предположить:
Подготовленные операторы MySQL изначально используют ?
в качестве заполнителя параметра, но PostgreSQL использует $1
, $2
и т.д. Попробуйте заменить ?
с $1
и посмотрим, работает ли это:
WHERE address = $1
Сообщения об ошибках в PostgreSQL очень загадочны.
В общем, я обнаружил, что сообщения об ошибках Postgres лучше, чем у конкурирующих продуктов (кхм, MySQL и особенно Oracle), но в данном случае вам удалось запутать синтаксический анализатор до безумия.
Создан 09 июля ’18, 13:07
В golang для запросов мы используем
- MySQL использует? вариант
- PostgreSQL использует перечисляемый синтаксис переменных $1, $2 и т. д.
- SQLite принимает оба? и синтаксис $1
- Oracle использует синтаксис :name
Создан 08 фев.
Вы используете Go правильно?
попробовать:
db.Query(`SELECT COUNT(*) as N FROM email WHERE address = $1`, email)
ответ дан 29 окт ’12, 10:10
В моем случае это произошло из-за использования —строчного комментария, когда программа, отвечающая за взаимодействие с базой данных, читала несколько строк моего запроса как одну гигантскую строку. Это означало, что комментарий к строке испортил оставшуюся часть запроса. Исправление состояло в том, чтобы вместо этого использовать /* блочный комментарий */.
ответ дан 07 апр.
Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками
sql
postgresql
go
or задайте свой вопрос.
Лизаветка 1 / 1 / 0 Регистрация: 01.05.2017 Сообщений: 34 |
||||
1 |
||||
01.05.2017, 21:41. Показов 35938. Ответов 13 Метки нет (Все метки)
Посмотрите, пожалуйста. Выдает ошибку expected ‘}’ at end of input, но скобки везде попарно
__________________
0 |
Джоуи 1073 / 635 / 240 Регистрация: 05.05.2015 Сообщений: 3,546 Записей в блоге: 2 |
|
01.05.2017, 21:53 |
2 |
а на какой строке вылетает ошибка?
0 |
284 / 232 / 114 Регистрация: 07.09.2016 Сообщений: 584 |
|
01.05.2017, 21:57 |
3 |
привыкайте нормально код форматировать. черт ногу сломит в такой писанине.
0 |
Джоуи 1073 / 635 / 240 Регистрация: 05.05.2015 Сообщений: 3,546 Записей в блоге: 2 |
|
01.05.2017, 21:59 |
4 |
Во-первых, если операция только одна, то операторные скобки необязательны (хотя бы не запутаетесь)
0 |
Лизаветка 1 / 1 / 0 Регистрация: 01.05.2017 Сообщений: 34 |
||||
01.05.2017, 22:07 [ТС] |
5 |
|||
вот полный код программы, выдает ошибку в последней строке, пробовала убирать частично код программы, ошибка уходит, если только убрать строки #include «teoria.h» и #include «teoria.cpp, выходит ошибка в них
0 |
Джоуи 1073 / 635 / 240 Регистрация: 05.05.2015 Сообщений: 3,546 Записей в блоге: 2 |
|
01.05.2017, 22:11 |
6 |
#include «teoria.cpp» что значит #include исходный код C++? Вы подключаете и хедер teoria.h и исходник teoria.cpp
0 |
Джоуи 1073 / 635 / 240 Регистрация: 05.05.2015 Сообщений: 3,546 Записей в блоге: 2 |
|
01.05.2017, 22:12 |
7 |
И учитесь уже обрамлять код тегами [CPP] Миниатюры
0 |
1 / 1 / 0 Регистрация: 01.05.2017 Сообщений: 34 |
|
01.05.2017, 22:15 [ТС] |
8 |
спасибо, впредь буду оформлять нормально, это мои первые 15 минут на данном форуме)
0 |
Джоуи 1073 / 635 / 240 Регистрация: 05.05.2015 Сообщений: 3,546 Записей в блоге: 2 |
|
01.05.2017, 22:16 |
9 |
Лизаветка, ну а насчет инклюдов Вы поняли?
0 |
Лизаветка 1 / 1 / 0 Регистрация: 01.05.2017 Сообщений: 34 |
||||||||
01.05.2017, 22:20 [ТС] |
10 |
|||||||
нет. я подключаю и то и то, без хедера ошибка остается.
и вот teoria.h
Что нужно убрать?
0 |
Джоуи 1073 / 635 / 240 Регистрация: 05.05.2015 Сообщений: 3,546 Записей в блоге: 2 |
|
01.05.2017, 22:22 |
11 |
Лизаветка, вопрос остается прежним: на какой строке и в каком файле возникает ошибка? Можно скриншот скинуть, если сами не разбираетесь
0 |
DU3 284 / 232 / 114 Регистрация: 07.09.2016 Сообщений: 584 |
||||
01.05.2017, 22:24 |
12 |
|||
Решение нормально форматируйте не только тут на форуме, но и у себя в редакторе и такого рода проблем будет на порядок меньше.
1 |
Joey |
01.05.2017, 22:29
|
Не по теме: DU3, ждем
0 |
1 / 1 / 0 Регистрация: 01.05.2017 Сообщений: 34 |
|
01.05.2017, 22:35 [ТС] |
14 |
Спасибо за ответы) ошибка выволилась на последней строке основной программы, оказалось нет закрывабщейся скобки в файле teoria.cpp , спасибо за вопросы, буду работать над оформлением��
1 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
01.05.2017, 22:35 |
Помогаю со студенческими работами здесь Ошибка: Expected END but received ELSE …
interface uses Ошибка ‘Expected END but recieved’ interface Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 14 |
Я новичок в разработке стратегий в tradingview, поэтому хотел бы попросить о помощи. Если есть кто-нибудь, кто мог бы мне помочь, я был бы очень признателен!
В строке 14 появляется синтаксическая ошибка:
line 14: syntax error at input 'end of line without line continuation'
Строка 14 в выражении xATRTrailingStop :=
Весь код:
//@version=5
study(title="TEST/TEST", overlay = true)
////////////////////////////////////////////////////////////////////////////////INPUTS
nATRPeriod = input(21, "Period")
nATRMultip = input(6.3, "Multiplier",type=float, minval=0.5, maxval=1000, step=0.1)
/////////////////////////////////////////////////////////////////////////////////ATR
xATR = atr(nATRPeriod)
nLoss = nATRMultip * xATR
xATRTrailingStop = na
xATRTrailingStop :=
iff(close > nz(xATRTrailingStop, 0) and close > nz(xATRTrailingStop, 0), max(nz(xATRTrailingStop), close - nLoss),
iff(close < nz(xATRTrailingStop, 0) and close < nz(xATRTrailingStop, 0), min(nz(xATRTrailingStop), close + nLoss),
iff(close > nz(xATRTrailingStop, 0), close - nLoss, close + nLoss)))
pos = na
pos :=
iff(close < nz(xATRTrailingStop, 0) and close > nz(xATRTrailingStop, 0), 1,
iff(close > nz(xATRTrailingStop, 0) and close < nz(xATRTrailingStop, 0), -1, nz(pos, 0)))
color = pos == -1 ? red: pos == 1 ? lime : blue
//patr=plot(xATRTrailingStop, color=color, linewidth=2, title="ATR Trailing Stop", transp=0)
// Deternine if we are currently LONG
isLong = false
isLong := nz(isLong, false)
// Determine if we are currently SHORT
isShort = false
isShort := nz(isShort, false)
//Trading
// Buy only if the buy signal is triggered and we are not already long
LONG = not isLong and pos == 1
// Sell only if the sell signal is triggered and we are not already short
SHORT = not isShort and pos == -1
if (LONG)
isLong := true
isShort := false
if (SHORT)
isLong := false
isShort := true
barcolor(isLong ? lime : isShort ? red : na)
// Show Break Alerts
plotshape(SHORT, title="Sell", style=shape.labeldown, location=location.abovebar, size=size.normal, text="Sell", transp=0, textcolor = white, color=red, transp=0)
plotshape(LONG, title="Buy", style=shape.labelup, location=location.belowbar, size=size.normal, text="Buy", textcolor = white, color=green, transp=0)
// === /PLOTTING ===
// Send alert to TV alarm sub-system
alertcondition(LONG,title="Sell",message="Sell")
alertcondition(SHORT,title="BuY",message="Buy")
alertcondition(SHORT,title="BuY",message="Buy")
alertcondition(SHORT,title="BuY",message="Buy")
////////////////////////////////////////////////////////////////////////////////VWMA
len2 = input(100, minval=1, title="Smooth")
src = input(close, title="Source")
out = vwma(src, len2)
avg1=avg(out, xATRTrailingStop)
plot(avg1, color=aqua, transp=0, title="ATR")
1 ответ
Лучший ответ
//@version=4
study(title="TEST/TEST", overlay = true)
////////////////////////////////////////////////////////////////////////////////INPUTS
nATRPeriod = input(21, "Period")
nATRMultip = input(6.3, "Multiplier",type=input.float, minval=0.5, maxval=1000, step=0.1)
/////////////////////////////////////////////////////////////////////////////////ATR
xATR = atr(nATRPeriod)
nLoss = nATRMultip * xATR
float xATRTrailingStop = na
xATRTrailingStop := iff(close > nz(xATRTrailingStop, 0) and close > nz(xATRTrailingStop, 0), max(nz(xATRTrailingStop), close - nLoss), iff(close < nz(xATRTrailingStop, 0) and close < nz(xATRTrailingStop, 0), min(nz(xATRTrailingStop), close + nLoss), iff(close > nz(xATRTrailingStop, 0), close - nLoss, close + nLoss)))
int pos = na
pos := iff(close < nz(xATRTrailingStop, 0) and close > nz(xATRTrailingStop, 0), 1, iff(close > nz(xATRTrailingStop, 0) and close < nz(xATRTrailingStop, 0), -1, nz(pos, 0)))
color = pos == -1 ? color.red: pos == 1 ? color.lime : color.blue
//patr=plot(xATRTrailingStop, color=color, linewidth=2, title="ATR Trailing Stop", transp=0)
// Deternine if we are currently LONG
isLong = false
isLong := nz(isLong, false)
// Determine if we are currently SHORT
isShort = false
isShort := nz(isShort, false)
//Trading
// Buy only if the buy signal is triggered and we are not already long
LONG = not isLong and pos == 1
// Sell only if the sell signal is triggered and we are not already short
SHORT = not isShort and pos == -1
if (LONG)
isLong := true
isShort := false
if (SHORT)
isLong := false
isShort := true
barcolor(isLong ? color.lime : isShort ? color.red : na)
// Show Break Alerts
plotshape(SHORT, title="Sell", style=shape.labeldown, location=location.abovebar, size=size.normal, text="Sell", transp=0, textcolor = color.white, color=color.red, transp=0)
plotshape(LONG, title="Buy", style=shape.labelup, location=location.belowbar, size=size.normal, text="Buy", textcolor = color.white, color=color.green, transp=0)
// === /PLOTTING ===
// Send alert to TV alarm sub-system
alertcondition(LONG,title="Sell",message="Sell")
alertcondition(SHORT,title="BuY",message="Buy")
alertcondition(SHORT,title="BuY",message="Buy")
alertcondition(SHORT,title="BuY",message="Buy")
////////////////////////////////////////////////////////////////////////////////VWMA
len2 = input(100, minval=1, title="Smooth")
src = input(close, title="Source")
out = vwma(src, len2)
avg1=avg(out, xATRTrailingStop)
plot(avg1, color=color.aqua, transp=0, title="ATR")
0
Starr Lucky
5 Июл 2021 в 09:15