JSDOM
не знает, где искать этот файл локально при выполнении. Итак, запустив свой пример, вы можете следовать любому из этих двух подходов.
1-й подход
Вам нужно дождаться загрузки и выполнения файла скрипта.
Создайте три файла index.html,index.js and test.js
в одной папке.
index.html
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
abc
<script src='index.js'></script>
</body>
</html>
index.js
document.body.textContent = 123;
test.js
'use strict';
const { JSDOM } = require('jsdom');
const options = {
resources: 'usable',
runScripts: 'dangerously',
};
JSDOM.fromFile('index.html', options).then((dom) => {
console.log(dom.window.document.body.textContent.trim());
setTimeout(() => {
console.log(dom.window.document.body.textContent.trim());
}, 5000);
});
// console output
// abc
// 123
2-й подход
Установите корневую папку базы внешних сценариев в JSDOM
env.
JS / index.js
console.log('load from jsdom');
var loadFromJSDOM = 'load from jsdom';
test.js
'use strict';
const { JSDOM } = require('jsdom');
JSDOM.env({
html: "<html><body></body></html>",
documentRoot: __dirname + '/js',
scripts: [
'index.js'
]
}, function (err, window) {
console.log(window.loadFromJSDOM);
}
);
Узнайте больше из этих ссылок
https://github.com/jsdom/jsdom/issues/1867
jsdom.env: локальный скрипт jquery не работает