serverless + webpack 解决 node_modules 空间大的问题

发布于 2024-12-11 12:43:32 字数 1474 浏览 15 评论 0

想做一个手机浏览器插件,双击收藏好看的图片。用 serverless 做后端,leancloud 做数据库。在部署 serverless 时发现,默认是要上传 node_modules 的,那也太夸张了吧。我随便装几个依赖,就 70M 了,这不行。于是想到了用 webpack 打包来实现,说干就干。

主要坑

target

target 需要设置为 node ,小坑

libraryTarget

开始没设置这个属性,然后打包部署之后,请求接口一直提示超时

{"errorCode":-1,"errorMessage":"Invoking task timed out after 10 seconds","requestId":"ddaa2df566de8e2540272e360b06329c","statusCode":433}

然后提交工单,也没啥用,还让我把 node_modules 全部传上去,那也太大了,不可能滴。

然后开始去 webpack 官网看配置,最后找到了他

libraryTarget: 'commonjs2'

原因:之前的打包方式没有 module.exports=__webpack_exports__ 这句,导致 serverless 那边无法调用服务,改成 commonjs2 就有了

开始

安装 webpack 依赖

"webpack": "^5.11.1",
"webpack-cli": "^4.2.0"

配置 webpack.config.js

const path = require('path');

module.exports = {
  entry: './app.js', // 单入口
  mode: "production",
  output: {
    filename: 'pro.js',
    path: path.resolve(__dirname,'dist'),
    libraryTarget: 'commonjs2', // 这是最关键的,后面讲他的坑
  },
  target: 'node' // 这是最关键的
};

增加启动脚本

"scripts": {
    "start": "node ./bin/www",
    "build": "webpack --progress",
    "deploy": "npm run build && sls deploy"
  },

打包之后,只有 1.3M, 部署之后,正常运行,完美

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

谜兔

暂无简介

文章
评论
27 人气
更多

推荐作者

梦途

文章 0 评论 0

蓝眼睛不忧郁

文章 0 评论 0

134fengkuang

文章 0 评论 0

yang18

文章 0 评论 0

属性

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文