serverless-heaven / serverless-webpack

Serverless plugin to bundle your lambdas with Webpack
MIT License
1.72k stars 417 forks source link

Does not include bn.js module in build #677

Closed aaronbannin closed 3 years ago

aaronbannin commented 3 years ago

This is a Bug Report

Description

Building does not include the bn.js module within bundled zip file.

For bug reports:

custom: s3-bucket: name: mongo-extractor-${opt:stage, self:provider.stage, 'dev'} arn: arn:aws:s3:::${self:custom.s3-bucket.name} webpack: webpackConfig: ./webpack.config.js includeModules: true

plugins:

provider: name: aws runtime: nodejs12.x timeout: 600 region: us-west-1 memorySize: 512 stage: dev iamRoleStatements:

functions: handler: src/setup.setup

resources: Resources: DataBucket: Type: AWS::S3::Bucket Properties: BucketName: ${self:custom.s3-bucket.name}


`package.json`: `bn.js` is required by `snowflake-sdk` and a variety of `webpack` libraries.

{ "version": "1.0.0", "description": "", "main": "handler.js", "scripts": { "deploy:dev": "serverless deploy --stage=dev", "deploy:prod": "serverless deploy --stage=prod", }, "dependencies": { "@types/mongodb": "^3.6.1", "@types/pino": "^6.3.4", "aws-sdk": "^2.794.0", "bn.js": "^5.1.3", "mongodb": "^3.6.3", "pino": "^6.7.0", "serverless-dotenv-plugin": "^3.1.0", "snowflake-promise": "^4.2.0", "snowflake-sdk": "^1.5.3" }, "devDependencies": { "@types/aws-lambda": "^8.10.17", "@types/node": "^10.17.46", "@types/serverless": "^1.72.5", "eslint-config-juni": "0.0.45", "serverless-iam-roles-per-function": "^2.0.2", "serverless-plugin-typescript": "^1.1.9", "serverless-webpack": "^5.2.0", "ts-loader": "^5.3.3", "ts-node": "^8.10.2", "typescript": "^3.9.7", "webpack": "^4.29.0", "webpack-node-externals": "^1.7.2" } }


`webpack.config.js`:

const path = require('path'); const slsw = require('serverless-webpack'); const nodeExternals = require('webpack-node-externals');

module.exports = { context: dirname, mode: slsw.lib.webpack.isLocal ? 'development' : 'production', entry: slsw.lib.entries, devtool: slsw.lib.webpack.isLocal ? 'cheap-module-eval-source-map' : 'source-map', resolve: { extensions: ['.mjs', '.json', '.ts'], symlinks: false, cacheWithContext: false, }, output: { libraryTarget: 'commonjs', path: path.join(dirname, '.webpack'), filename: '[name].js', }, target: 'node', externals: [nodeExternals()], module: { rules: [ // all files with a .ts or .tsx extension will be handled by ts-loader { test: /.(tsx?)$/, loader: 'ts-loader', exclude: [ [ path.resolve(__dirname, 'node_modules'), path.resolve(dirname, '.serverless'), path.resolve(dirname, '.webpack'), ], ], options: { transpileOnly: true, experimentalWatchApi: true, }, }, ], } };


* What stacktrace or error message from your provider did you see?
```    "trace": [
        "Error: Cannot find module 'bn.js'",
        "Require stack:",
        "- /var/task/node_modules/snowflake-sdk/lib/agent/cert_util.js",
        "- /var/task/node_modules/snowflake-sdk/lib/agent/check.js",
        "- /var/task/node_modules/snowflake-sdk/lib/agent/socket_util.js",
        "- /var/task/node_modules/snowflake-sdk/lib/agent/https_ocsp_agent.js",
        "- /var/task/node_modules/snowflake-sdk/lib/http/node.js",
        "- /var/task/node_modules/snowflake-sdk/lib/snowflake.js",
        "- /var/task/node_modules/snowflake-sdk/index.js",
        "- /var/task/node_modules/snowflake-promise/build/src/Snowflake.js",
        "- /var/task/node_modules/snowflake-promise/build/src/index.js",
        "- /var/task/src/setup.js",
        "- /var/task/s_setup.js",
        "- /var/runtime/UserFunction.js",
        "- /var/runtime/index.js",
        "    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:831:15)",
        "    at Module._require.o.require (/var/task/serverless_sdk/index.js:9:72934)",
        "    at require (internal/modules/cjs/helpers.js:74:18)",
        "    at Object.<anonymous> (/var/task/node_modules/snowflake-sdk/lib/agent/cert_util.js:36:12)",
        "    at Module._compile (internal/modules/cjs/loader.js:1015:30)",
        "    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1035:10)",
        "    at Module.load (internal/modules/cjs/loader.js:879:32)",
        "    at Function.Module._load (internal/modules/cjs/loader.js:724:14)",
        "    at Module.require (internal/modules/cjs/loader.js:903:19)",
        "    at Module._require.o.require (/var/task/serverless_sdk/index.js:9:73200)"
    ]

For feature proposals: N/A

Similar or dependent issue(s): Not found.

Additional Data

aaronbannin commented 3 years ago

This was fixed by removing all generated files and directories based on package.json and rebuilding.