#node.js
#node.js
Вопрос:
У нас есть скрипт, который запускается как сценарий предварительной установки. Он использует fs.WriteFile для записи файла конфигурации, который он генерирует.
writeFile(configFilePath, configFileContents, (e) => {
// ... do some error handling
}
По какой-то причине он использует окончания строк CRLF в Windows и создает различия в git, хотя файл не изменился.
Я пытался использовать
.replace(/rn/gm, "n");
включено configFileContents
, но по-прежнему использует окончания строк Windows.
configFileContents
создается:
const configFileContents = JSON.stringify({
foo: bar,
baz, foo,
// ...
}, null, 2);
Есть ли способ сообщить Node использовать Linux-файлы?
Комментарии:
1. Я пробую ваш код и получаю
LF
окончание строки2. Это странно. Мы просто создаем объект, строим его с помощью приведенного выше кода, и он сохраняется с использованием окончаний строк Windows.
3. Попробуйте
console.log(configFileContents.includes('r'));
,true
илиfalse
?4. Почему вы сказали
it uses CRLF line endings on Windows
5. Я допустил ошибку, моя вина. Похоже, кто-то что-то нажал с окончаниями строк Windows, и скрипт сгенерировал его с окончаниями строк Linux. Я неправильно прочитал разницу и предположил, что это сделала моя машина.
Ответ №1:
Вы можете просто сделать это:
.replace(/rn/g, "n")
Также /rn/gm
регулярное выражение неверно, поскольку вы уже указываете движку регулярных выражений искать новую строку, предоставляя опцию m
/multiple lines … Вот почему это не позволяет выражению работать. Просто используйте g
, если вы действительно не хотите использовать регулярное выражение
Комментарии:
1. Не могли бы вы быть более понятными, пожалуйста.. Я не понял, что вы пытались сказать
2.
'rn abcrn'.replace(/rn/gm, "n").includes('r')
естьfalse
,'rn abcrn'.replace("rn", "n").includes('r')
естьtrue
. Вы отвечаете, что не можете удалить всеr
3. ну, есть вариант, который я не очень знаю clearly..is использование
require('os').EOL
. Я думаю, что это не должно помочь, но стоит попробовать… Такое поведение обычно происходит, если этот файл редактируется любым редактором, который использует разрывы строк CRLF вместо LF. Если вы используете VSCode, вы можете изменить его с нижней панели инструментов. Это позволит редактировать файл в режиме LF4. Я допустил ошибку, моя вина. Похоже, кто-то что-то нажал с окончаниями строк Windows, и скрипт сгенерировал его с окончаниями строк Linux. Я неправильно прочитал разницу и предположил, что это сделала моя машина.
5. Ошибка случается, не беспокойтесь