Ответ 1
Решение
Просто поставьте точку с запятой (;
) после console.log(
... )
.
Описание
Ошибка легко воспроизводится следующим образом:
console.log()
(function(){})
Я действительно запутался, как я могу получить console.log не является функцией в строке 1091. Если я удалю закрытие ниже, строка 1091 не будет жаловаться на такую ошибку. Chrome версии 43.0.2357.130 (64-разрядная версия).
Вот код:
$scope.columnNameChanged = function (tableColumn) {
setDirtyColumn(tableColumn);
//propagate changes to the key fields
for (var i = 0; i < $scope.tableIndexes.length; ++i) {
for (var j = 0; j < $scope.tableIndexes[i].columnName.length; ++j) {
if ($scope.tableIndexes[i].columnName[j] === tableColumn.previousName) {
console.log('xxx', $scope.tableIndexes[i].columnName[j])
(function (i, j) {
$timeout(function () {
console.log($scope.tableIndexes[i].columnName[j])
$scope.tableIndexes[i].columnName[j] = tableColumn.name.toUpperCase();
console.log($scope.tableIndexes[i].columnName[j])
});
})(i, j);
}
}
}
};
Просто поставьте точку с запятой (;
) после console.log(
... )
.
Ошибка легко воспроизводится следующим образом:
console.log()
(function(){})
Ошибка означает, что возвращаемое значение console.log()
не является функцией. Вам не хватает точки с запятой:
console.log('xxx', $scope.tableIndexes[i].columnName[j]);
// ^
который позволяет интерпретировать как интерпретатор функции (...)
IIFE как вызов функции.
Сравните сообщения об ошибках
> var foo = {bar: undefined};
> foo.bar();
Uncaught TypeError: foo.bar is not a function
и
> var foo = {bar: function(){}};
> foo.bar()();
Uncaught TypeError: foo.bar(...) is not a function
Одна из возможных причин может быть объявлением var console
где-то в вашем script.
Использование:
window.console.log(...);
вместо этого. Работал для меня.
Я надеюсь, что это поможет
Есть еще один способ встретить эту ошибку. console.log
не является неизменным и можно случайно перезаписать значение.
console.log = 'hi';
В этом случае просто перезагрузите страницу, чтобы отменить повреждение.
Я знаю, что это не "ответ", но думал, что я бросил бы в следующем
var console = $( data.message_target );
console.val( console.val() + data.message);
console.scrollTop(console[0].scrollHeight - console.height());
У меня была текстовая область на странице, которую я называл "консоль". внезапно все мои скрипты console.log() выдавали ошибку "Uncaught TypeError: console.log не является функцией в Object"
... и правильно, потому что я использовал зарезервированное пространство имен для моего объекта /var. Я понял, что я сделал после прочтения его поста, и ради потомков: дважды проверь соглашения об именах.
ура
"это всегда человеческая ошибка"
По крайней мере, вact-native консоль работает без импорта, поэтому удаление import console = require('console');
или import console from 'console';
с самого начала мой файл исправил это для меня. (кажется, что ID Code VS автоматически добавляет это автоматически)