dherault / dherault/serverless-offline

dot in module path breaks execution

Open
#1,860 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
JavaScript
Stars
5.3k
Forks
811
Avg merge
2d 4h
Merged PRs (30d)
3

Description

## Bug Report

using latest serverless-offline (14.4.0)
using serverless 3.40.0

**Current Behavior**

using pnpm install to manage node_modules
with `virtualStoreDir=node_modules/pnpmstore`

running pnpm deploy to create the artifact defined in serverless.yml for the lambdas

deploy folder shows node_modules/.pnpm as virtual store directory due to hardcoding (see [here](https://github.com/pnpm/pnpm/blob/13526e0fef6bf7eb9d09017148e5222594918830/releasing/plugin-commands-deploy/src/deploy.ts#L181))

`serverless offline --httpPort 5000 --stage localhost --config ./serverless.yml --noPrependStageInUrl --localEnvironment`

errors with:

```
Server ready: http://localhost:5000 🚀

ANY /pipeline/healthcheck (λ: pipeline-api)
× Unhandled exception in handler 'pipeline-api'.
× Runtime.UserCodeSyntaxError: SyntaxError: Unexpected token '.'
at _loadUserApp (/home/lfo/lfo/portal/node_modules/pnpmstore/serverless-offline@14.4.0_serverless@3.40.0_encoding@0.1.13_/node_modules/serverless-offline/src/lambda/handler-runner/in-process-runner/aws-lambda-ric/UserFunction.js:239:13)
at async module.exports.load (/home/lfo/lfo/portal/node_modules/pnpmstore/serverless-offline@14.4.0_serverless@3.40.0_encoding@0.1.13_/node_modules/serverless-offline/src/lambda/handler-runner/in-process-runner/aws-lambda-ric/UserFunction.js:311:19)
at async InProcessRunner.run (file:///home/lfo/lfo/portal/node_modules/pnpmstore/serverless-offline@14.4.0_serverless@3.40.0_encoding@0.1.13_/node_modules/serverless-offline/src/lambda/handler-runner/in-process-runner/InProcessRunner.js:41:21)
at async MessagePort. (file:///home/lfo/lfo/portal/node_modules/pnpmstore/serverless-offline@14.4.0_serverless@3.40.0_encoding@0.1.13_/node_modules/serverless-offline/src/lambda/handler-runner/worker-thread-runner/workerThreadHelper.js:24:14)
× SyntaxError: Unexpected token '.'
```

**Sample Code**

- file: serverless.yml

```
service: ${self:custom.service}

frameworkVersion: '3.40.0'
variablesResolutionMode: 20210326
configValidationMode: error

# the following comment will be substituted during AWS deployment to:
# # package:
# # artifact: ./lambda-api.zip
package:
artifact: ./lambda-api.zip

layers:
noOp:
name: ${self:custom.service}-${self:custom.stage}-noOp
compatibleRuntimes:
- ${self:custom.awsLambdaRuntime}
path: .tmp
nodeModules:
name: ${self:custom.service}-${self:custom.stage}-nodeModules
compatibleRuntimes:
- ${self:custom.awsLambdaRuntime}
package:
artifact: ./lambda-api-node-modules.zip
```

**Expected behavior/code**

dont error but handle the handler

**Environment**

- `serverless` version: see top
- `serverless-offline` see top
- `node.js` version: 20.19.0
- `OS`: node 20.19.0 docker image

**Possible Solution**

???

**Additional context/Screenshots**

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.