#javascript #html #node.js
#javascript #HTML #node.js
Вопрос:
Я пытаюсь использовать NodeJS
для изменения HTML
файла, чтобы добавить тег сценария в начало HTML
, чтобы он выполнялся раньше всех других сценариев.
Мой текущий код выглядит следующим образом:
const fs = require('fs');
const parse = require('node-html-parser').parse;
fs.readFile('test.html', 'utf8', (err,html)=>{
if(err){
throw err;
}
const root = parse(html);
const head = root.querySelector('head');
if (head !== null) {
head.insertBefore( '<script src = "test.js"></script>', head.firstChild);
fs.writeFile('test.html', root.toString(), function (err) {
if (err) return console.log(err);
});
}
});
Но insertBefore
выдает исключение. Как я могу это исправить?
Комментарии:
1. Пожалуйста, опубликуйте ошибку, которую вы получаете. Я не вижу никакого
insertBefore
метода в ссылке API для этой библиотеки, и я бы не стал ожидать, что он обязательно будет поддерживать все методы DOM.
Ответ №1:
insertBefore
принимает узел в качестве первого аргумента; вы передаете ему строку. Вставьте скрипт с innerHTML
вместо:
head.innerHTML = '<script src = "test.js"></script>' head.innerHTML;
insertAdjacentHTML
тоже можно использовать.
Комментарии:
1.
document
не определено. Когда я используюroot
, я получаюroot.createElement is not a function
2. О, конечно. Вместо этого вы можете добавить
innerHTML
.3. Или вы можете использовать
parse()
для создания<script>
(вероятно)