next.js “未找到模块:无法解析...”到自定义模块-TS 2307

vmdwslir  于 2023-01-25  发布在  其他
关注(0)|答案(2)|浏览(157)

我们从另一个开发者那里继承了Next + TypeScript站点,我们试图创建一个新的组件,它在很大程度上基于一个已经存在的组件。我已经将整个组件和子文件夹复制到了与现有组件相同的级别,但是如果我改变对克隆文件夹的引用,我会得到"Module not found:无法解决"错误:

import { MyModule } from '@project-root/shared/foo/bar/old/module';

有用,但是

import { MyModule } from '@project-root/shared/foo/bar/new/module';

在同一个文件中,不会复制。但是"新"文件夹中的内容是直接从"旧"文件夹中复制的。
我已经复制了对tsconfig.base.json路径的引用并重新启动,但没有找到:

"@project-root/shared/foo/bar/old/module": [
   "libs/shared/foo/bar/old/module/src/index.ts"
],
"@project-root/shared/foo/bar/new/module'": [
   "libs/shared/foo/bar/new/module/src/index.ts"
],

问题的原因是什么?如何解决?

9rnv2umw

9rnv2umw1#

正如你所建议的,这就是我的答案。“@project-root/shared/foo/bar/new/module '”结尾的撇号是问题所在。我也遇到过一次,其他人刚看过它就立刻发现了它...

ha5z0ras

ha5z0ras2#

@DerAnonyme发现了这个问题,在不应该出现的地方多了一个撇号(在新路径Map键的路径字符串末尾(“module'“))--我敢打赌是由于import语句的复制粘贴错误:

"@project-root/shared/foo/bar/new/module'": [
   "libs/shared/foo/bar/new/module/src/index.ts"
],

我可以重现得到相同的错误信息。
tsconfig.json

{
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "@project-root/shared/foo/bar/old/module": ["A.ts"],
      "@project-root/shared/foo/bar/new/module'": ["B.ts"]
    }
  }
}

A.ts和B.ts

export const foo = 0;

index.ts

import { foo as fooA } from "@project-root/shared/foo/bar/old/module"
import { foo as fooB } from "@project-root/shared/foo/bar/new/module"

error(注意第1行的路径Map没有错误):

index.ts:2:29 - error TS2307: Cannot find module '@project-root/shared/foo/bar/new/module' or its corresponding type declarations.

2 import { foo as fooB } from "@project-root/shared/foo/bar/new/module"
                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

然后,删 debugging 误的撇号字符,错误就消失了。

相关问题