Примечание: Этот вопрос не является дубликатом других существующих вопросов, поскольку в этом вопросе не используется вызов функции jsdom.env()
, который делают другие вопросы.
Файл bar.js
:
console.log('bar says: hello')
Файл foo.js
:
var jsdom = require('jsdom')
var html = '<!DOCTYPE html><head><script src="bar.js"></script></head><body><div>Foo</div></body>'
var window = new jsdom.JSDOM(html).window
window.onload = function () {
console.log('window loaded')
}
Когда я запускаю foo.js
, я получаю этот вывод.
$ node foo.js
window loaded
Почему bar says: hello
вывод не пришел? Похоже, bar.js
не был загружен. Как я могу заставить jsdom
загрузить файл в тег script
?
Проблема решена после предложения в ответе Квентина. Этот код работает:
var jsdom = require('jsdom')
var html = '<!DOCTYPE html><head><script src="bar.js"></script></head><body><div>Foo</div></body>'
var window = new jsdom.JSDOM(html, { runScripts: "dangerously", resources: "usable" }).window
window.onload = function () {
console.log('window loaded')
}