aws / language-servers

AWS related Language Servers
Apache License 2.0
23 stars 18 forks source link

CodeWhisperer server broken for NPM Workspaces: Cannot set properties of null (setting 'dev') #348

Closed andredcoliveira closed 3 months ago

andredcoliveira commented 3 months ago

Describe the bug

Installing @aws/lsp-codewhisperer in an NPM workspace fails with an error:

npm error Cannot set properties of null (setting 'dev')

To reproduce

You can use the following script:

#!/bin/bash

set -euxo pipefail

TMP_DIR=tmp_$RANDOM

mkdir $TMP_DIR
cd $TMP_DIR
npm init -y
npm init -y -w packages/a
npm install -w packages/a @aws/lsp-codewhisperer@0.0.6

Expected behavior

The installation should succeed.

Your Environment

Additional context

This affects versions 0.0.5 and 0.0.6. Version 0.0.4 still works.

NPM Debug log is attached: 2024-06-26T15_06_43_763Z-debug-0.log

andredcoliveira commented 3 months ago

Importing the module afterwards also seems broken, which is kind of expected since the installation failed:

~/repos/offline/test_dexp/tmp_897 $ node
Welcome to Node.js v20.15.0.
Type ".help" for more information.
> const asd = require("@aws/lsp-codewhisperer")
Uncaught Error: Cannot find module '@aws-sdk/util-user-agent-node'
Require stack:
- /Users/olvandr/repos/offline/test_dexp/tmp_897/node_modules/@aws/lsp-codewhisperer/src.gen/@amzn/codewhisperer-streaming/dist-cjs/runtimeConfig.js
- /Users/olvandr/repos/offline/test_dexp/tmp_897/node_modules/@aws/lsp-codewhisperer/src.gen/@amzn/codewhisperer-streaming/dist-cjs/CodeWhispererStreamingClient.js
- /Users/olvandr/repos/offline/test_dexp/tmp_897/node_modules/@aws/lsp-codewhisperer/src.gen/@amzn/codewhisperer-streaming/dist-cjs/index.js
- /Users/olvandr/repos/offline/test_dexp/tmp_897/node_modules/@aws/lsp-codewhisperer/out/language-server/chat/utils.js
- /Users/olvandr/repos/offline/test_dexp/tmp_897/node_modules/@aws/lsp-codewhisperer/out/language-server/chat/chatController.js
- /Users/olvandr/repos/offline/test_dexp/tmp_897/node_modules/@aws/lsp-codewhisperer/out/language-server/qChatServer.js
- /Users/olvandr/repos/offline/test_dexp/tmp_897/node_modules/@aws/lsp-codewhisperer/out/index.js
- <repl>
    at Module._resolveFilename (node:internal/modules/cjs/loader:1145:15)
    at Module._load (node:internal/modules/cjs/loader:986:27)
    at Module.require (node:internal/modules/cjs/loader:1233:19)
    at require (node:internal/modules/helpers:179:18) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [
    '/Users/olvandr/repos/offline/test_dexp/tmp_897/node_modules/@aws/lsp-codewhisperer/src.gen/@amzn/codewhisperer-streaming/dist-cjs/runtimeConfig.js',
    '/Users/olvandr/repos/offline/test_dexp/tmp_897/node_modules/@aws/lsp-codewhisperer/src.gen/@amzn/codewhisperer-streaming/dist-cjs/CodeWhispererStreamingClient.js',
    '/Users/olvandr/repos/offline/test_dexp/tmp_897/node_modules/@aws/lsp-codewhisperer/src.gen/@amzn/codewhisperer-streaming/dist-cjs/index.js',
    '/Users/olvandr/repos/offline/test_dexp/tmp_897/node_modules/@aws/lsp-codewhisperer/out/language-server/chat/utils.js',
    '/Users/olvandr/repos/offline/test_dexp/tmp_897/node_modules/@aws/lsp-codewhisperer/out/language-server/chat/chatController.js',
    '/Users/olvandr/repos/offline/test_dexp/tmp_897/node_modules/@aws/lsp-codewhisperer/out/language-server/qChatServer.js',
    '/Users/olvandr/repos/offline/test_dexp/tmp_897/node_modules/@aws/lsp-codewhisperer/out/index.js',
    '<repl>'
  ]
}
andredcoliveira commented 3 months ago

Tested v0.0.9 with the script below and it seems to work now:

#!/bin/bash

set -euxo pipefail

TMP_DIR=tmp_$RANDOM

mkdir $TMP_DIR
cd $TMP_DIR
npm init -y
npm init -y -w packages/a
npm install -w packages/a @aws/lsp-codewhisperer@0.0.9

Thanks!