Javascript 在浏览器中运行节点模块

Javascript 在浏览器中运行节点模块,javascript,node.js,npm,node-modules,httpserver,Javascript,Node.js,Npm,Node Modules,Httpserver,我正在尝试使用此节点模块上载和读取excel文件:根据浏览器下的说明我需要将此代码放入我的.js文件中: import readXlsxFile from 'read-excel-file' const input = document.getElementById('input') input.addEventListener('change', () => { readXlsxFile(input.files[0]).then((rows) => { // `ro

我正在尝试使用此节点模块上载和读取excel文件:根据浏览器下的说明我需要将此代码放入我的.js文件中:

import readXlsxFile from 'read-excel-file'

const input = document.getElementById('input')

input.addEventListener('change', () => {
  readXlsxFile(input.files[0]).then((rows) => {
    // `rows` is an array of rows
    // each row being an array of cells.
  })
})

但是浏览器不知道什么是
从“读取excel文件”导入readXlsxFile
。应该注意的是,我正在使用
httpserver
http://localhost:8080/

TL;DR:你必须把你的JS代码编译成浏览器可用的代码。使用或这样做

长话短说:浏览器不理解导入(例如:资源在哪里?)。您可以使用webpack等工具创建JavaScript代码包,这些代码包在编译时检测从YY导入XX意味着他们必须在de node_模块或bower_模块文件夹中查找该模块,并将其包含在最终包中


PS:请注意,并非所有npm模块都能在浏览器中运行,因为它们是节点模块,反之亦然(它们提供不同的API)。

这里有两个问题:

  • read excel文件包不支持客户端,因此无法在浏览器中运行它。它仅适用于NodeJ(服务器)

  • 假设它在客户端(浏览器)中支持,您可以将其用于现代浏览器或通过使用CDN链接


    • 答案可能是另一个库。浏览器中的一个功能是

      这里有一个正在运行的演示:

      浏览器现在有了,但是为Node.js设计的模块(带有Node.js的模块解析系统)将不受支持。