VSCode 报错 之 运行 js 文件报错 ReferenceError: document is not defined

1. 背景

持续学习ing

2. 遇到的问题

在VSCode 右键 code runner js 文件报错 ReferenceError: document is not defined
eg:

// 为每个按钮添加点击事件监听器
document.querySelectorAll('button').forEach(function (button) {
    button.addEventListener('click', function () {
        // 获取当前按钮的data-phone和data-password属性值
        const phone = this.getAttribute('data-phone');
        const password = this.getAttribute('data-password');

        // 获取当前活动的标签页
        chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) {
            // 在当前标签页中注入并执行脚本
            chrome.scripting.executeScript({
                target: { tabId: tabs[0].id },
                function: login,
                args: [0, phone, password]
            });
        });

    });

报错的提醒:
在这里插入图片描述

3. 问题的原因

  1. js 脚本的运行环境有浏览器环境和 Node.js 两种,根据 Node.js 官方网站的介绍,Node.js is a JavaScript runtime built on Chrome’s V8 JavaScript engine.
  2. 上述代码调用了 Document 类型提供的方法 document.querySelectorAll(‘button’).forEach(function (button),属于 DOM 的应用,但是对于 DOM 和 BOM 的操作只有在浏览器环境下才能进行,
  3. 在 VSCode 这里我用插件 Code Runner 来运行 js 脚本的,Code Runner 的配置是 Node.js
    环境,如果操作 DOM 就会报错。

4. DOM 和 BOM区别参考文章

https://blog.csdn.net/qq_52736131/article/details/123563321

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Template execution failed: ReferenceError: document is not defined 这个错误表明在模板执行过程中发生了一个错误,错误信息为document is not defined。这个错误通常是由于在代码中尝试使用document对象,但是在当前的上下文中没有定义document对象所致。 根据提供的信息,可以看出你的错误可能与webpack打包配置有关。在你的index.html文件中,有一个<link rel="icon" href="<%=htmlWebpackPlugin.options.url%>favicon.ico"></link>的代码段,该代码段可能会尝试使用document对象。然而,由于webpack的打包过程中,document对象可能无法在服务器端运行时使用。这可能是导致错误的原因之一。 此外,还有一个<script src=<%= BASE_URL %>/tinymce4.7.***由于webpack的打包过程中,这段代码也可能无法正确执行。 要解决这个问题,你可以尝试将涉及到document对象的代码从模板中移出,并放置到适当的位置。你可以将这些代码放在适当的生命周期钩子函数中,例如在Vue组件的mounted钩子函数中。这样可以确保在浏览器环境中执行这些代码时,document对象已经定义好了。同时,你也可以使用Webpack的插件或者loader来处理这些特定的代码段,以适应打包的环境。具体的配置可以根据你的需求和项目的特点来确定。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [打包报错ERROR in Template execution failed: ReferenceError: BASE_URL is not defined](https://blog.csdn.net/a1783118/article/details/131432872)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Template execution failed: ReferenceError: htmlWebpackPlugin is not defined](https://blog.csdn.net/zyj24685144/article/details/116303942)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值