«ReferenceError: документ не определен» - PullRequest
0 голосов
/ 08 января 2020

Добрый день, я начал заниматься jsdom. Написал очень простую функцию для наглядности. Написал тест, используя mocha, chai и JSDOM.

Все «документы» в моем module.js скрыты из-за того, что если я их раскомментирую, появится ошибка "ReferenceError: document is not defined". Теоретически я уже понимаю, что это значит. Эта ошибка означает, что в узле нет окна, документа и т. Д. c. Но я не знаю, как решить эту проблему.

Буду признателен за любую помощь.

enter image description here

enter image description here

index. html:

<body>
  <input type="text" id="inputValue">
  <input type="text" id="outputValue">
  <button id="getResult">getResult</button>

  <script src="./module.js"></script>
</body>

модуль. js

//var input = document.getElementById("inputValue");
//var output = document.getElementById("outputValue");
//var button = document.getElementById("getResult").addEventListener('click', generateValue);

function generateValue(input, output){
    output.value = input.value * 5;
}

module.exports = {
    generateValue,
};

тесты. js

    let object = require("../module.js");
const assert = require("chai").assert;
const { JSDOM } = require("jsdom");

describe("generateValue", function() {
    let dom = null;
    before(async function() {
        dom = new JSDOM('<!doctype html><html><head></head><body></body></html>')
    });

    it('Should return 25 when parameter 5', function() {
        const input = dom.window.document.createElement("input");
        input.id = "inputValue";
        const output = dom.window.document.createElement("input");
        output.id = "outputValue";
        dom.window.document.body.append(input);
        dom.window.document.body.append(output);
        input.value = 5;
        const expected = 25;

        object.generateValue(input, output);
        assert.equal(output.value, expected);
    });
});

1 Ответ

0 голосов
/ 08 января 2020

Первое: Вы не можете экспортировать или импортировать за пределы модуля
это означает, что узел не может использовать в html, если вы не объявите браузеру, как это: script tag => узел запускается в консоли (командная строка как c ++) и html запускается в браузере ...

Секунда: Почему вы хотите сгенерировать значение и экспортировать, что вы можете сделать это в своем тесте. js file
Если вы хотите сделать это, вы должны использовать узел в качестве сервера, например PHP .. (с небольшой разницей)

по тому, как вы можете вычислить сгенерировать значение с помощью другого файла js, а затем показать это (или все, что вам нужно) и использовать функцию asyn c, чтобы получить значение и что-то сделать ..... но вы должны добавить еще один тег сценария в html файл

Помните, что вы не можете использовать узел типа JS Файл в HTML Вот почему у нас нет документа и окна в node.js

...