我正在尝试将我的 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/