Примечание. Этот вопрос не дублирует другие существующие вопросы, потому что в этом вопросе не используется вызов функции jsdom.env()
, который используется в более ранней версии JSDOM.
Файл 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
?
[EDIT/SOLUTION]: проблема решена после выполнения предложения в ответе Квентина. Этот код работает:
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')
}
jsdom.env()
. Это не так. Как этот ответ применим здесь? - person Lone Learner   schedule 30.10.2018bar.js
иfoo.js
, но не могу воспроизвести ваш сценарий. Он возвращает толькоwindow loaded
, но неbar says: hello
. В приведенном выше коде отсутствуют некоторые настройки или код? - person Hugolpz   schedule 01.09.2020