簡體   English   中英

為什么在使用 Node.js 運行文件時顯示此錯誤?

[英]Why this Error showing while running a file using Node.js?

我試圖使用“節點腳本”命令運行 javascript 文件“腳本”,但它確實顯示錯誤。 在使用節點之前沒有錯誤。 而且我還確認腳本鏈接具有延遲屬性,因此它將在 HTML 代碼之后加載。

PS C:\Users\user\Desktop\my port> node script
C:\Users\user\Desktop\my port\script.js:1
const tabs=document.querySelectorAll('[data-tab-target]');
         ^

ReferenceError: document is not defined
  at Object.<anonymous> (C:\Users\user\Desktop\my port\script.js:1:12)
  at Module._compile (internal/modules/cjs/loader.js:1251:30)
  at Object.Module._extensions..js (internal/modules/cjs/loader.js:1272:10)
  at Module.load (internal/modules/cjs/loader.js:1100:32)
  at Function.Module._load (internal/modules/cjs/loader.js:962:14)
  at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
  at internal/main/run_main_module.js:17:47

    

這是 javascript 代碼:

const tabs= document.querySelectorAll('[data-tab-target]');
const pannels= document.querySelectorAll('[data-tab-content]');
tabs.forEach(tab => {
    tab.addEventListener('click',()=>{
       const target=document.querySelector(tab.dataset.tabTarget);
       pannels.forEach((pannel)=>{
           pannel.classList.remove('active');
       });
       tabs.forEach((tab)=>{
        tab.classList.remove('active');
    });


       target.classList.add('active');
       tab.classList.add('active');
    
});
});

盡管 NodeJS 使用 JavaScript 引擎運行,但它並沒有像通常使用document變量那樣在瀏覽器中運行。 那是只存在於 web 頁面上的東西,因為它是DOM的一部分。

由於這是在您的終端中運行的,因此沒有可參考的document

我認為您正在尋找的是一個節點庫,它將啟動一個服務器以將您的 HTML 和 JavaScript 發送到客戶端。 如果是這種情況,我建議查看ExpressJSKoaJS

document僅在瀏覽器上可用,在服務器上運行時不可用

您要做的是在服務器環境(處理文件系統和進程等)中運行瀏覽器 JavaScript (處理windowdocument等)。 可以編寫 JavaScript 無需修改即可在兩者中運行,但每個環境都有一些“全局”變量是唯一的。 在您的代碼中, document將是其中之一。 此代碼專門用於瀏覽器,它可以在其中讀取和寫入“文檔”(可能是您的 index.html)。 在 nodejs 中,沒有文檔,因為服務器本身並不打算顯示任何內容,而只是讀取/寫入控制台或文件。

DOM(文檔 object 模型)與瀏覽器有關,與 NodeJS 或 javascript 無關。 DOM 操作由瀏覽器提供。 您可以使用 JSDo 將 Dom 支持添加到 Node.js。 Browserify 也可能會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM