typescript 导入别名“theme”的循环定义

w8rqjzmb  于 12个月前  发布在  TypeScript
关注(0)|答案(2)|浏览(176)

我试图扩展第三方私有npm模块的主题。项目编译成功,但我一直得到一个typescript错误Circular definition of import alias 'externalTheme'
下面是我如何扩展的主题。这是完美的工作方式,它是使用我的主题和外部主题相结合

import { externalTheme, ExternalThemeInterface } from 'external-npm-repo...'

import { colors, ColorsTypes } from './colors'

export const MyTheme: MyThemeInterface = {
    ...theme,
    colors,
}

export interface MyThemeInterface extends ExternalThemeInterface {
    colors: ColorsTypes
}

字符串
我得到的错误是引用循环依赖与externalTheme导入,我不知道这到底是什么意思,并没有发现任何明确的参考研究时。
这些是我的Typescript设置

"allowJs": true,
        "alwaysStrict": true,
        "esModuleInterop": true,
        "forceConsistentCasingInFileNames": true,
        "isolatedModules": true,
        "jsx": "preserve",
        "lib": ["dom", "es2017"],
        "module": "esnext",
        "moduleResolution": "node",
        "noEmit": true,
        "noFallthroughCasesInSwitch": true,
        "noUnusedLocals": true,
        "noUnusedParameters": true,
        "resolveJsonModule": true,
        "skipLibCheck": true,
        "strict": true,
        "target": "esnext"

pdtvr36n

pdtvr36n1#

此错误的另一个原因是从与当前文件同名的依赖项导入时
举例说明:

// local/file/express.ts
import * as express from 'express'

字符串
要解决此问题,请将本地文件“express.ts”重命名为“another-name.ts”

im9ewurl

im9ewurl2#

循环依赖(也称为循环依赖)发生在两个或多个模块相互引用时。
这可以是直接引用(A -> B -> A):或间接引用(A -> B -> C -> A):
创建一个文件webpack.config.js并尝试将circular-dependency-plugin添加到您的webpack配置https://www.npmjs.com/package/circular-dependency-plugin中。这应该会显示代码中的循环依赖。
您的代码看起来像这样的类型(A -> B -> A):所以,对于更简单的模式,如A -> B -> A,refactoring可能是必要的。也许位于B中的模块可以移动到A。或者,必要的代码可以提取到A和B都引用的C中。如果两个模块执行类似的行为,它们也可以组合成一个模块。

相关问题