在浏览器中运行节点模块

时间:2018-08-23 11:14:58

标签: javascript node.js npm node-modules httpserver

我正在尝试使用以下节点模块read-excel-file上传和读取excel文件,并根据浏览器下的说明,我需要将此代码放入.js文件中:< / p>

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.
  })
})

但是浏览器不知道什么是import readXlsxFile from 'read-excel-file'。应该注意的是,我正在使用http-serverhttp://localhost:8080/上查看我的项目

3 个答案:

答案 0 :(得分:0)

TL; DR:您必须实际上将js代码编译为浏览可用的代码。使用Bower,Webpack或其他捆绑工具来这样做。

长话短说:浏览器无法理解导入(例如:资源在哪里?)。您可以使用bower或webpack之类的工具来创建JavaScript代码束,以在编译时检测从YY导入XX的javascript代码,这意味着它们必须在de node_modules或bower_modules文件夹中查找该模块,并将其包含在最终包中

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

答案 1 :(得分:0)

这里有两个问题:

  • read-excel-file软件包不支持客户端,因此您无法在浏览器中运行它。它仅适用于nodejs(server)

  • 假设客户端(浏览器)已支持,您可以将JavaScript modules via script tag用于现代浏览器,也可以通过unpkg使用CDN链接。

答案 2 :(得分:0)

一个不同的库可能是答案。浏览器中的一种作品是sheetjs

这里有一个有效的演示:https://sheetjs.com/demos/modify.html