У меня есть ошибка с моим файлом bower.json.Как проверить bower.json?
Google обнаружил, что это довольно часто, часто из-за непечатаемого символа (из-за использования редактора, который использует такие символы).
Есть ли способ проверить файл локально из cli?
В качестве FYI, моя ошибка заключается в следующем:
bower meltingpot#* EMALFORMED Failed to read /tmp/james/bower/meltingpot-5659-xBMHsL/bower.json
Additional error details:
Unexpected token ]
Содержимое моего файла bower.json следующим образом:
{
"name": "meltingpot",
"version": "0.0.1",
"homepage": "https://github.com/jamesjenner/meltingpot",
"authors": [
"james-jenner <[email protected]########.com>"
],
"description": "HTML based application, websockets for comms and node.js for backend",
"keywords": [
"application",
"websocket",
"node"
],
"license": "MIT",
"ignore": [
"**/.*",
"Gruntfile.js",
"application.js",
"bower_components",
"comms.js",
"node_modules",
"*.json",
"panelHandler.js",
"shared/panel.js",
"test",
"tests"
]
}
В то время как я рад, если кто-то может указать причина проблемы, реальный вопрос заключается в том, как я могу проверить файл bower.json для обнаружения и идентификации любых ошибок. Предпочтение было бы в том, что строка предоставляется там, где возникает ошибка.
: редактировать:
Я создал небольшой скрипт для чтения файла Бауэр, анализировать данные через JSON, а затем stringify результат. Из опыта, если в json-файле содержался некорректный json, я бы получил исключение. Таким образом, похоже, проблема связана не с форматом файла, а с содержимым.
Code I используется для проверки файла:
var fs = require('fs');
var data;
try {
data = fs.readFileSync('bower.json');
} catch (e) {
if (e.code === 'ENOENT') {
// ENOENT is file not found, that is okay, just means no records
} else {
// unknown error, lets throw
throw e;
}
}
var json = JSON.parse(data);
console.log(JSON.stringify(json, null, ' '));
: редактировать:
Я теперь проверена с помощью bower-json
пакет (спасибо jayeff), и до сих пор проверяет, как хорошо. Код используется следующим образом:
var bowerJson = require('bower-json');
// Can also be used by simply calling bowerJson()
bowerJson.read('./bower.json', function (err, json) {
if (err) {
console.error('There was an error reading the file');
console.error(err.message);
return;
}
console.log('JSON: ', json);
try {
bowerJson.validate(json);
} catch (err) {
console.error('There was an error validating the object');
console.error(err.message);
}
});
: редактировать:
Просто чтобы быть ясно, на решении (предоставляется drorb ниже), проблема была, что я создал тег, заметил лишнюю запятую, а затем зафиксировал запятую, просто совершив изменение. Что касается беседы, то он принимал последний релиз/тег, поэтому игнорировал исправление в моей фиксации.
Кроме того, в то время как в git вы можете удалить версию через git -d <tag>
, bower, похоже, принимает релиз, а не последнюю метку (есть сложности с тем, как github использует релизы). В моем случае я удалил 0.1.0, добавил 0.0.1, и регистр колокольчика проигнорировал 0.0.1. Я был вынужден создать тег 0.1.1 (после внесения изменений в файл bower.json), а затем я смог зарегистрироваться.
Теперь я обнаружил, что вы можете удалить релизы из github через интерфейс веб-сайта (см. Editing and Deleting Releases). Мне удалось убрать мои релизы, обновить package.json
, а затем нажать релиз, который я хотел, через git tag <tag> -a -m "<desc>"
и git push --tags
. Теперь bower info <mypackage>
отображает правильную информацию.
Я добавил выше, поскольку это не обсуждалось, когда я просматривал другие сообщения stackoverflow, у которых есть эта проблема. Надеюсь, что вышеизложенное разъясняет проблему тегов и совершает беседу, пытается зарегистрироваться и как убрать ошибки.
Я также рекомендую прочитать Creating and Maintaining your own Bower Package.
Возможно, обновите заголовок и тело этого вопроса, чтобы он не ошибочно отображался в поиске Google для людей, пытающихся проверить их bower.json. –