У меня была функция:
function parseDevName(name) {
var re = /^([^-]+)-([^-]+)-([^-]+)$/g;
var match = re.exec(name);
return match.slice(1,4);
}
var rv = parseDevName("BR-H-01");
rv = parseDevName("BR-H-01");
Первый вызов работает. Второй звонок - нет. Операция slice
жалуется на нулевое значение. Я предполагаю, что это из-за re.lastIndex
. Это странно, потому что я ожидал бы, что новый RegExp
будет выделяться каждый раз, когда функция вызывается и не разделяется между несколькими вызовами моей функции.
Когда я изменил ее на:
var re = new RegExp('^([^-]+)-([^-]+)-([^-]+)$', 'g');
Тогда я не получаю эффект удержания lastIndex
. Он работает так, как я ожидал.
Обновление: Еще проще установить npm@5.8.0 или новее.
Предполагая Git, самым простым «решением» этой проблемы является использование .gitattributes
, чтобы указать, что package.json
(и теперь package-lock.json
) всегда должны использовать LF:
# .gitattributes in project root
package.json text eol=lf
package-lock.json text eol=lf
package*.json text eol=lf
– emackey 22 September 2017 в 20:23package
и заканчивается на.json
?! (Преждевременная оптимизация - это весело.) – dahlbyk 28 September 2017 в 20:46