-
Notifications
You must be signed in to change notification settings - Fork 27
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
Identifier '$Completions' has already been declared #60
Comments
Got to this error after tackling #59, for what it is worth. |
#53 was meant to solve this sort of issue. But we seem to be playing whack-a-mole with the ludicrous number of permutations ESM provides for exporting entities. I am quite open to suggestions here. |
It's worth noting this is failing at a higher level now in 4.40.1 of openai. However that release broke cjs exports, and someone logged this issue npm i openai@4.40.1
node --loader=import-in-the-middle/hook.mjs --input-type=module -e "import OpenAI from 'openai'; const a = new OpenAI();" let $OpenAI = $171467968826591576f6c.OpenAI
^
SyntaxError: Identifier '$OpenAI' has already been declared
at ModuleLoader.moduleStrategy (node:internal/modules/esm/translators:167:18)
at callTranslator (node:internal/modules/esm/loader:285:14)
at ModuleLoader.moduleProvider (node:internal/modules/esm/loader:291:30) |
I'm trying to setup Sentry for Node.js (type: module) with the following guide https://docs.sentry.io/platforms/javascript/guides/express/install/esm/ wich recommends the --import command line option to import the instrument.js/.mjs file and can't at the moment due to this issue. I keep getting the Identifier '$Completions' has already been declared error. It seems they are using this package in their SDK. |
@timfish, looks promising! |
@timfish what is the expected "export" of:
Genuinely, I do not know what the export should be. Both |
Ok so I just tested Node without the loader and the behaviour depends on the import: With: export const foo = "a"
export const foo = "b"
export * from './a.mjs'
export * from './b.mjs' The following: import * as e from './duplciate.mjs'
console.log('exports', e); Results in:
And this import { foo } from './duplciate.mjs'
console.log('foo', foo); Results in an error
So I guess we need to mirror this behaviour? |
That makes sense for the presented replication. I think we should definitely throw an error in this case since it is clearly an unresolvable situation. However, we need to figure out how to replicate the allowed graph that the OpenAI module seems to be making use of, and determine a way to handle it appropriately. The whack-a-mole game continues 🤣 |
Throwing is ok in some circumstances, but we'd rather not have any cases where registering the hook causes code to throw where it didn't before. |
Getting error:
The file contents:
After taking a closer look, the problem seems to be that
./chat/index.mjs
exports:which end up conflicting with
export { Completions, } from "./completions.mjs";
The text was updated successfully, but these errors were encountered: