Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cdk context returns "string.replace is not a function" #2854

Closed
Labels
bug This issue is a bug.

Comments

@lkoniecz
Copy link

Describe the bug
cdk.json:

{
  "app": "node index",
  "context": {
    "port": "12345"
  }
}

cdk context prints out:

lky@lky-Z170-D3H:~/Repositories/LearningCdk$ cdk context
Context found in cdk.json:

string.replace is not a function

To Reproduce
run cdk context

Expected behavior
cdk context prints context variables

Version:

  • OS: ubuntu 19.4
  • Programming Language: typescript
  • CDK Version: 0.34.0 (build 523807c)
@lkoniecz lkoniecz added the bug This issue is a bug. label Jun 13, 2019
@michaelmoussa
Copy link
Contributor

This appears to have been introduced in v0.29.0, see below:

$ cdk --version
0.28.0 (build 3ba2622)

$ cdk context
Context found in cdk.json:

┌───┬─────┬───────┐
│ # │ Key │ Value │
├───┼─────┼───────┤
│ 1 │ foo │ "bar" │
└───┴─────┴───────┘

$ npm install -g aws-cdk@0.29.0
$ cdk --version
0.29.0 (build 2d44ed7)

$ cdk context
Context found in cdk.json:

string.replace is not a function

RomainMuller pushed a commit that referenced this issue Jun 14, 2019
`@aws-sdk/cloudformation-diff` depended on version `^2.1.1` of the `string-width`
library in `v0.28.0` of `aws-sdk`. In `v0.29.0`, the dependency was bumped to
`^4.1.0`, which inadvertently broke the `cdk context` command as reported
in: #2854.

The current version of `string-width` executes a [string replacement](sindresorhus/string-width@0bc308a#diff-168726dbe96b3ce427e7fedce31bb0bcR7), which ends up failing
when a non-string (such as the `int` row numbers of the `cdk context`
values). This did not previously occur, as the typecheck for `string`
would cause the function to return early and report zero-length.

The easiest solution here is to cast these values to `string`, which
has the beneficial side effect of ensuring that their character lengths
are taken into consideration rather than being defaulted to `0` as they
had previously been.

Fixes #2854
This was referenced Dec 12, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment