在没有 Webpack 的情况下使用模块“child_process”

Posted

技术标签:

【中文标题】在没有 Webpack 的情况下使用模块“child_process”【英文标题】:Using module "child_process" without Webpack 【发布时间】:2016-05-01 05:19:42 【问题描述】:

我正在使用 Webpack 来捆绑依赖项,其中之一是电子邮件服务 postmark。该服务依赖于一个名为 child_process 的东西,显然是 node 附带的。

问题是,当我尝试运行 webpack 来捆绑我的应用程序时,它会抱怨:

找不到模块:错误:无法解析模块中的“child_process”...

网上大部分答案都说,针对这个错误,我应该加一行:

  node: 
    child_process: 'empty'
  

到我的 webpack 配置。但这没有任何意义,因为 webpack 只是不尝试查找 child_process,因此,当我运行我的应用程序时,我收到以下错误:

未捕获的类型错误:exec 不是函数

这是来自postmark(依赖于child_process 的服务)的错误,抱怨child_process 模块中的exec 函数不存在。

因此,我想知道如何在我的构建中包含 child_process 模块而不引起 webpack 抱怨?

【问题讨论】:

【参考方案1】:

这里是 Postmark 的前端开发者。

您似乎正在尝试将 postmark.js 捆绑到您的客户端 javascript 中,但 https://github.com/wildbit/postmark.js 是一个 Node.js 库。这意味着它不会在浏览器中运行,需要一个正在运行的 Node.js 服务器。

不支持浏览器环境的主要原因是安全性。正如你在这个例子中看到的:

var postmark = require("postmark");
var client = new postmark.Client("<server key>");

它要求您插入身份验证令牌。将它与您的客户端 JS 捆绑在一起会暴露它并允许每个人访问您的邮戳帐户 API。

希望这可以澄清它。

【讨论】:

感谢您的回复 - 我已将其移植到我的 express 后端,它运行良好。

以上是关于在没有 Webpack 的情况下使用模块“child_process”的主要内容,如果未能解决你的问题,请参考以下文章

在没有Webpack的情况下从NPM模块解析Sass @import

Jest 在没有 webpack 的情况下配置 typescript

webpack 支持的模块方法

需要没有webpack等的模块

在没有 webpack 的情况下使用 ActionText

在没有 webpack 的情况下使用 Vue js 组件