添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

I’m porting my app to embroider, and I have an addon that has a TypeScript-based library as a dependency. While this works fine and good without embroider, as soon as I add embroider, the named imports come back undefined (without error).

For example take,

import { ItemA, ItemB, ItemC } from 'my-ts-library';

This works in pre-emborider ember 4.x builds (with ember-auto-import 2.x), but with embroider, item-a, item-b, and item-c are resolved undefined.

Here is the tsconfig for the typescript library:

"compilerOptions": { "target": "es2017", "module": "commonjs", "resolveJsonModule": true, "declaration": true, "sourceMap": true, "outDir": "./dist", "strict": true, "noUnusedLocals": true, "typeRoots": [ "./node_modules/@types", "./typings" "esModuleInterop": true

also, all the files are setup in an index.ts file as follows

export { default as ItemA } from './item-a'
export { default as ItemB } from './item-b'
export { default as ItemC } from './item-c'

Is there any additional wepack config I need in my addon or test-suite setup that allows imports to be handled in the same way, or is there a more preferred tsconfig to enable this?

Maybe also of note when I import from my library like:

import MyTsLibrary from 'my-ts-library';

I get something like this

so basically just an empty object with only _esModule: true set on it.

Thanks for responding and trying to help. The strange thing is my pre-embroider build resolves it with auto-import and runs fine. its transpiled to javascript in node_modules in its dist directory, which I assume where its supposed to be. My company owns the source for the library, so I can play with it. I guess I just need to find out why its different between embroider and current ember-cli with the same auto-import version, and I need to figure out what is preferred with exports/packaging.

Might be work trying DEBUG="ember-auto-import:*" on classic ember then with embroider and comparing the difference. It might log a warning or error. Another thing you could check is the .embroider folder in your node_modules your package could be under the rewritten packages folder, might be worth checking if embroider is trying to do something with it

I’ve noticed when I run embroider builds with the auto-import debug flag it always just gives me one line of debug log

That’s it lol.

Mikek2252:

Another thing you could check is the .embroider folder in your node_modules your package could be under the rewritten packages folder, might be worth checking if embroider is trying to do something with it

since its just a ts library it doesn’t show up in rewritten packages.

ok, I tweaked the Typescript lib to make it work, but it requires using a different module strategy (esnext vs commonjs). Here are the new values:

"compilerOptions": { "target": "es2017", "module": "ESNEXT", "lib": ["dom", "esnext"], "declaration": true, "sourceMap": true, "outDir": "./dist", "strict": true, "noUnusedLocals": true, "moduleResolution": "node", "typeRoots": [ "./node_modules/@types", "./typings" "allowSyntheticDefaultImports": true, "esModuleInterop": true

I’d like to keep the library as-is using commonjs (as there’s other non-ember stuff that’s using it in this way. I guess I could do a seperate commonjs and esm build. I’d like to understand why there’s a problem and if there’s anything I can do on the ember-auto-import/webpack side of things to make it work, so I’ll continue to investigate.