ReferenceError: документът не е дефиниран

Добър ден, започнах да се занимавам с jsdom. Написах много проста функция за яснота. Написах тест, използвайки мока, чай и JSDOM.

Всички „документи“ в моя module.js са скрити поради факта, че ако ги разкоментирам, ще се появи грешката "ReferenceError: document is not defined". На теория вече разбирам какво означава. Тази грешка означава, че в Node няма прозорец, документ и т.н.. Но не знам как да разреша този проблем.

Ще бъда благодарен за всяка помощ.

въведете описание на изображението тук

въведете описание на изображението тук

index.html:

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

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

module.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,
};

tests.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);
    });
});

person Andrey Belichenko    schedule 08.01.2020    source източник


Отговори (1)


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

Второ:
Защо искате да генерирате Value и експортирате, че можете да направите това във вашия файл test.js
Ако вие искате да направите това, трябва да използвате възел като сървър като PHP.. (с малка разлика)

между другото можете да изчислите генериране на стойност с друг js файл и след това да покажете това (или всичко, което искате) и използвайте async функция, за да получите стойност и да направите нещо..... но трябва да добавите друг маркер на скрипт в html файл

Не забравяйте, че не можете да използвате Node като JS файл в HTML Ето защо нямаме документ и прозорец в node.js

person M.M.F    schedule 08.01.2020