【问题标题】:How to fix "document is not defined"如何修复“文档未定义”
【发布时间】:2020-01-26 09:46:47
【问题描述】:

我在使用 ejs 的 nodejs 中遇到“找不到文档”的问题。我想使用“输入类型 = 文件”从客户端读取文件并将文件数据获取到我的服务器。

/=======Nodejs 代码:======/

 router.get('/upload',(req,res)=>{

      const fileData= document.getElementById('uploadForm').files[0].path;
              fs.readFile(fileData,(err,data)=>{
                  if(err) throw err;
                 // let dataObject =JSON.parse(data);
                  console.log(data);
              });
       });

/======Ejs 代码:======/

<form  action="/upload" method="POST">
                        <div class="col-md-6">
                              Upload License File (XLS / TXT): <input type="file"  id="uploadForm" name="uploadForm" >
                              <button type="submit"  class="btn btn-primary" style="margin-top: 10px;border-radius:0;">Upload</button>

                        </div>
                  </form>

  <script type="text/javascript" src="/routes/index.js"> 
                                          var x = document.getElementById('uploadForm'); //make sure this tag is below "demo"
                                    </script>  




ReferenceError: document is not defined
    at Object.<anonymous> (C:\Users\Pranay\Desktop\nodejs_Lic\routes\index.js:101:14)
    at Module._compile (internal/modules/cjs/loader.js:701:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)
    at Module.load (internal/modules/cjs/loader.js:600:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
    at Function.Module._load (internal/modules/cjs/loader.js:531:3)
    at Module.require (internal/modules/cjs/loader.js:637:17)
    at require (internal/modules/cjs/helpers.js:22:18)
    at Object.<anonymous> (C:\Users\Pranay\Desktop\nodejs_Lic\app.js:7:19)
    at Module._compile (internal/modules/cjs/loader.js:701:30)

【问题讨论】:

  • 您忘记了常量fileData 后面的= 符号。
  • 您在后端定义了它。 nodejs中没有document
  • document 大多数时候是浏览器中window 全局对象的属性。 Node.js 不在浏览器中运行,也不在 DOM 内容的上下文中运行,因此两者都有“文档”可以使用,因为没有 window 并且从概念上讲它没有意义. Node 作为后端可以提供任何文档甚至它想要的内容,它甚至不需要是 DOM,而在浏览器中运行的代码是在当前加载的页面的上下文中。
  • 表单使用 POST 方法,所以路由器应该监听 POST,而不是 GET:router.post(...
  • 表单数据应该在 node.js 端的req.body 中可用。另请阅读:stackoverflow.com/questions/9304888/…

标签: javascript node.js ejs


【解决方案1】:

您的代码没有问题,只是在常量fileData 之后忘记了= 符号。

【讨论】:

    猜你喜欢
    • 2019-09-23
    • 2021-08-17
    • 2019-09-16
    • 2019-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-11
    • 1970-01-01
    相关资源
    最近更新 更多