Bug报告
🔎 搜索词
Nodenext通配符,类型不能命名
🕗 版本与回归信息
仅在使用nodenext进行模块解析时出现此问题
⏯ Playground链接
可克隆的仓库:https://github.com/geoffreytools/effect-test-tsc
💻 代码
import { TaggedClass } from '@effect/data/Data';
// import '@effect/data/Equal';
export class Foo extends TaggedClass('Foo')<{}> {}
🙁 实际行为
The inferred type of 'Foo' cannot be named without a reference to '../node_modules/@effect/data/Equal'. This is likely not portable. A type annotation is necessary.
🙂 预期行为
在不使用nodenext的情况下正确编译,它可以正常工作,并且同样的问题不会影响到其他传递导入,例如Hash,它们以相同的方式导出。只要有对Equal
的显式导入,或者在库的package.json中添加以下内容,问题就会消失:
{
"exports": {
"./Equal": {
"import": {
"types": "./Equal.d.ts",
"default": "./mjs/Equal.mjs"
}
}
}
}
请注意,该库使用通配符./*
将每个导入Map到一个文件,这可以通过node完全解析。
3条答案
按热度按时间6yoyoihd1#
这个影响所有多模块/多入口模块。
有人能看一下吗?在esm中使用这个bug构建真的很繁琐。
这个bug也出现在模块自我导入的情况下。
wxclj1h52#
我认为 #56107 是这个问题的重复——请参阅我在那里的分析。
这会影响所有多模块/多入口模块。
#56107 特定于 Effect 使用的再导出模式;我没有看到其他库受到此问题的影响。@datner,你可能遇到了完全不同的事情。如果有人在 Effect 之外遇到这个问题,请提供一个复现示例,以便我们看看是否有其他不同之处。
ugmeyewa3#
我认为 #56107 是这个问题的重复——请参阅我在那里的分析。
这影响了所有多模块/多入口模块。
#56107 特定于 Effect 使用的再导出模式;我没有看到其他库受到此问题的影响。@datner,你可能遇到了完全不同的事情。如果有人在 Effect 之外遇到这个问题,请提供一个复现示例,以便我们看看是否有其他不同之处。
这里对 Effect 有什么特殊之处?我们只是重新导出一个模块