Почему не пишут файловую работу node.js

Почему этот вызов fs.writeFile не работает? Я использую Linux Ubuntu. Вызов находится в самом конце этой задачи gulp, где я пытаюсь записать строку, правильность которой я проверил, поверх файла. Код [ключа] манифеста возвращает правильное имя файла. Это должно работать, если я не упускаю что-то глупое. Пожалуйста помоги! Вызов writefile не показывает ошибки. Но файл не перезаписывается.

gulp.task('injecttags', function() {
const manifest = jsonfile.readFileSync('./public/manifest/manifest.json');

const htmlkeys = [];
Object.keys(manifest).forEach((key) => {
    if (key.endsWith('.html')) {
        htmlkeys.push(key);
    }
});

htmlkeys.forEach((key) => {
    console.info("For key:", key);
    let file_content = fs.readFileSync('./public/html/'+manifest[key]).toString();
    console.info(file_content);
    let position = 0;
    while (((position = file_content.indexOf('<!-- INSERTSCRIPT=', position)) !== -1)) {
        const actualpositiontowriteto = file_content.indexOf('\n', position);
        const openquotepos = file_content.indexOf("'", position) + 1;
        const closequotepos = file_content.indexOf("'", openquotepos);
        const keystr = file_content.substring(openquotepos, closequotepos);
        const toinsert = `<script src = "${manifest[keystr]}"></script>\n`;
        const beg = file_content.substr(0, position);
        const end = file_content.substr(actualpositiontowriteto);
        file_content = beg + toinsert + end;
    }
    position = 0;
    while (((position = file_content.indexOf('<!-- INSERTCSS=', position)) !== -1)) {
        const actualpositiontowriteto = file_content.indexOf('\n', position);
        const openquotepos = file_content.indexOf("'", position) + 1;
        const closequotepos = file_content.indexOf("'", openquotepos);
        const keystr = file_content.substring(openquotepos, closequotepos);
        const toinsert = `<link rel = "stylesheet" href = "${manifest[keystr]}">\n`;
        const beg = file_content.substr(0, position);
        const end = file_content.substr(actualpositiontowriteto);
        file_content = beg + toinsert + end;
    }

    fs.writeFile('./public/html/'+manifest[key], file_content, (err) => {
        if (err) return console.info('error writing file!', err);
        return console.info('successful file write');
    });
});
});

«Не работает» - не очень хорошее описание проблемы. Что ты видишь в консоли? Вы ждете завершения записи, прежде чем пытаться использовать ее результаты. Какую отладку вы сделали? Что вы узнали во время отладки?

jfriend00 18.04.2018 18:09

Да, я просто просматриваю файл в текстовом редакторе после выполнения задачи. Кажется, это тот же самый файл, что и до записи. Как я уже говорил, я подтвердил, что различные входные данные, такие как manifest [key], верны. Вызывает недоумение то, что Node говорит, что запись была без ошибок, но я не вижу записи.

Jacob Stewart 18.04.2018 18:18

Тогда файл, который он записывает, вероятно, находится не в том месте, на которое вы смотрите. fs.writeFile() не лжет. Если он не сообщает об ошибке, и вы уверены, что ждете, пока это будет сделано, то он будет писать успешно. Так что, возможно, ./public/html/'+manifest[key] не совсем там, где вы думаете.

jfriend00 18.04.2018 18:21

Я был на версии 9.x.x Node, теперь я перешел на 8.11.1, и это то же самое.

Jacob Stewart 18.04.2018 18:21

Иногда он явно записывал в файл, о котором идет речь, иногда нет. Когда я плохо зацикливал, я получал много правильных записей, но неправильный вывод. Я исправил цикл, и теперь вообще нет записи. Это так странно, смеется.

Jacob Stewart 18.04.2018 18:24

Бут просто убрать Node и Gulp ... Честно говоря, я не виноват. Судя по всему, секвенсор для Gulp, который я использую, - это всего лишь хитрость, но это лучшее, что я могу найти ...

Jacob Stewart 18.04.2018 18:27

Что лучше всего подходит для системы сборки веб-разработчиков в настоящее время? У Webpack и Gulp есть проблемы. Хотел бы получить ответ на этот вопрос.

Jacob Stewart 18.04.2018 18:36
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
7
33
0

Другие вопросы по теме