Чтобы браузер мог загрузить ваш элемент script
, он должен быть частью документа. Это относится и к JSDOM, и к таким браузерам, как Chrome, Firefox и т. Д.
Вы создаете элемент script
, но я не вижу, чтобы вы добавляли его в window.document
. ( Создание это не то же самое, что добавление к документу.) Это может сделать что-то столь же простое, как window.document.body.appendChild(script)
.
JSDOM не сможет найти ваш скрипт, если вы не скажете ему, где он находится. Поскольку вы просите его проанализировать строку, базовый URL, который использует JSDOM, не тот, который вам нужен. Вы можете исправить это, указав url
, который сообщает JSDOM, какой путь использовать для разрешения относительных путей. Например:
var window = new jsdom.JSDOM(html, { url: "file://.", runScripts: "dangerously", resources: "usable" }).window
Это добавляет url: "file://."
. Если файл bar.js
находится в том же месте, что и ваш скрипт, который вызывает JSDOM, он будет работать.