在 pm2 服务器上使用 DOM 运行 的 JS 脚本

JS Script using DOM running on pm2 server

我读过服务器端,你不能使用DOM。我使用 DOM 创建了一个 Web 应用程序,我想知道需要做什么才能重现此代码以使其在服务器上运行,以便互联网上的人们可以使用它。下面是小峰的一段代码:

// Listen for export button click
document.getElementById('exportForm').addEventListener('submit', function (e) {
    setTimeout(exportData, 20);
    e.preventDefault();
});

// Export data function
function exportData(e) {
    console.log("Exporting...");

    // device details and time range details
    const devId = (document.getElementById('deviceInput')).value;
    var dateFrom = (document.getElementById('dateFromInput')).value;
    var dateTo = (document.getElementById('dateToInput')).value;
    var timeFrom = (document.getElementById('timeFromInput')).value;
    var timeTo = (document.getElementById('timeToInput')).value;
    const limit = (document.getElementById('limitInput')).value;
    const key = (document.getElementById('keysInput')).value;

当我尝试使用 pm2 start app.js 在服务器上 运行 它时,它 returns 这个错误:

ReferenceError: document is not defined
    at Object.<anonymous> (/home/cloud/sites/App/app.js:6:1)
    at Module._compile (internal/modules/cjs/loader.js:999:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
    at Module.load (internal/modules/cjs/loader.js:863:32)
    at Function.Module._load (internal/modules/cjs/loader.js:708:14)
    at Object.<anonymous> (/usr/lib/node_modules/pm2/lib/ProcessContainerFork.js:33:23)
    at Module._compile (internal/modules/cjs/loader.js:999:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
    at Module.load (internal/modules/cjs/loader.js:863:32)
    at Function.Module._load (internal/modules/cjs/loader.js:708:14)

我听说过 JSDom,但我认为需要在字符串中包含 html 然后我不知道如何连接那里的 css 等等。我有更好的方法来完成这项工作吗?

文档对象是一种浏览器功能,因此您不能在服务器内部使用它,相反,您可以使用其他功能,例如 FS(文件系统)

无论如何使用 JSDom 是可能的,你必须使用内联样式重写 https://www.codecademy.com/article/html-inline-styles 这不是一个好的做法,你应该避免它