node.js - node_modules 打包失败(Webpack 或 Browserify)

标签 node.js webpack browserify aws-lambda knex.js

我正在尝试将我的 node.js 应用程序与 webpack 或 browserify 捆绑在一起,但我需要一些后端模块,例如 knex、bookshelf 等。

但是 webpack 和 browserify 无法打包这些模块,因为它们使用 require() 做了一些奇怪的事情...

我遇到了这些错误:找不到模块“sqlite3”错误:找不到模块“./dialects/postgres/index.js”

我无法忽略我的node_modules目录,因为我需要包中的模块,因为我无法访问将使用我的包的环境。 (AWS Lambda)

我不需要webpack或browserify来优化我的node_modules,但我需要它们,有没有办法告诉webpack或browserify只捆绑node_module文件夹并在缺少需求时相信我?

编辑:我正在使用无服务器来测试和部署我的 lambda,唯一允许我将 ES2015 与 babel 一起使用的插件强制我使用 webpack/browserify

谢谢:)

最佳答案

您可以将 node_modules 合并到您的 Lambda 包(包含您在 Amazon Lambda 中上传的代码的 zip 文件)中,并且不需要将其打包(我的意思是使用 Webpack 创建一个文件或浏览器化)。

某些 Node 模块不适合在浏览器中使用,也不支持打包,因为它们使用动态需求。他们有充分的理由这样做,特别是像 Bookshelf 或 Sequelize 这样的 ORM。

Webpack can manage simple dynamic requires ,但它仅适用于易于解析的规则。如果您出于某种原因确实想使用 webpack,您可以查看 ContextReplacementPlugin但我认为这不值得付出努力。

关于node.js - node_modules 打包失败(Webpack 或 Browserify),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37443286/

相关文章:

jquery - 如何使用 webpack 添加 jquery-ui css/图像

svg - 如何使用 Webpack 通过 React 内联多个 SVG?

node.js - 不和谐机器人 : Call a user by name?

javascript - 如何从nodejs中的外部url检索DOM对象

node.js - 如何从 next() 停止 Express.js 路由?

javascript - 通过 prop 将 vuejs 中的内联 SVG 加载到组件中

node.js - 浏览 Node.js http 服务器

node.js - browserify external 与 exclude 有什么区别?

全局使用模块的一个实例的 JavaScript 最佳实践

node.js - Node : Data sent acknowledgement to TCP server