【问题标题】:Is it true webpack5 is unable to polyfill libraries? What are some solutions?是真的 webpack5 无法填充库吗?有哪些解决方案?
【发布时间】:2020-10-17 10:58:01
【问题描述】:

我的问题是:我在浏览器中使用的js 脚本中使用了require(下载nodemailer)。根据SO post 的建议,我下载了 browserify。它允许我在浏览器使用的js 文件中使用require

Webpack 是列出的另一个替代方案。它比 browserify 更常见并且具有更多功能(例如智能地排列导入和导出(从另一个)的文件)。

但是,webpack 似乎不适用于 nodemailer。这是我尝试制作bundle.js 文件时的错误代码:

我的问题是:

  • 我对问题的总结以及解决问题的步骤是否合理?
  • 如果是这样,人们正在使用哪些常见的解决方案?例如:我喜欢 webpack 并且想在 `js` 脚本中使用库。人们是否同时使用两者?

【问题讨论】:

    标签: javascript html webpack webpack-4


    【解决方案1】:

    Webpack 处理 require 没有问题,这就是它存在的理由!

    你不能 polyfill Nodemailer。这取决于 Node.js 提供但在 Web 浏览器中不可用的 API。

    如果您想从网络浏览器发送电子邮件,那么通常的方法是向发送电子邮件的网络服务发出 HTTP 请求。

    【讨论】:

    • 我能够将 nodemailer 与 Node.js & express 一起使用。尝试仅将 nodemailer 与 browserify 一起使用,但这是行不通的(当我 运行网页 时出现的错误是:net.isIP is not a function)。这正常吗?这就是you can't polyfill nodemailer 的意思吗?我正在学习反应。我想知道这是否会使 nodemailer 更容易使用。
    • 这里有人提出了类似的疑问:stackoverflow.com/questions/55163689/…。我想知道为什么它可以在 express 中工作,而不是通过 browserify(或 react)。我认为 browserify 的全部意义在于能够在浏览器脚本中使用库。我唯一的猜测是它需要连接到在线的东西,也许 express 对此有帮助。顺便说一句,感谢您的回复。
    • 见答案第二段。要发送电子邮件,您需要(为了争论)能够打开原始套接字以通过 SMTP 进行通信。 Node.js 提供了这一点。网络浏览器没有。 React 在浏览器中运行,它不能(更不用说更容易)在那里使用 Nodemailer。
    • 好的。我遵循的教程使用了 express & 'express-handlbars'(扩展名为 .handlebar),并在本地端口上快速渲染了一些标签。你能判断这个项目是从Node.js 运行还是从网络浏览器运行?最后,我发现了仅在前端工作的 EmailJS。现在就这样。
    • 您遵循的教程将涉及设置通过 Node.js 运行的网络服务器。 EmailJS 使用 Web 服务……它恰好是第三方 Web 服务,您必须将 SMTP 服务器的密钥提供给该服务。我不相信他们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-05
    • 2010-09-05
    • 2021-07-20
    • 2010-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多