错误TS2307:找不到模块(外部,私有模块)

时间:2017-02-27 08:41:28

标签: javascript node.js typescript

我读过类似的问题,包括tsc throws `TS2307: Cannot find module` for a local file

我有一个私有的外部模块(在本地git服务器上),我尝试将其包含在我的应用程序中 - 这可行。

  • phpStorm可以完美地解决这些问题!
  • 应用程序抛出错误TS2307但运行完美

我想知道为什么转换器会抛出此错误,虽然一切看起来都很好,但我需要将此错误用于稳定部署。

模块tsconfig.json看起来像:

{
    "compilerOptions": {
        "module": "commonjs",
        "moduleResolution": "node",
        "target": "ES6",
        "typeRoots": [
            "node_modules/@types"
        ],
        "sourceMap": false,
        "noImplicitAny": false,
        "declaration": true,
        "noResolve": false
    },
    "version": "2.0.0"
}

我尝试了上述几种组合但没有成功。

我在模块中有一个Main.ts,如

export {default as Logger}  from "./Logger";
export {ILogger as ILogger} from './ILogger';

类和接口在哪里

export interface ILogger { }
export default class Logger implements ILogger { }

在我使用的应用程序中:

import {Logger, ILogger} from "logging";

当我尝试转换应用程序而不是模块时,会发生错误。同样,当通过节点运行应用程序时以及在phpStorm中进行编码时,一切都有效,但在转换时我得到:

src/Main.ts(9,39): error TS2307: Cannot find module 'logging'.

更新

看起来像tsc中的错误:https://github.com/Microsoft/TypeScript/issues/14332

2 个答案:

答案 0 :(得分:0)

我们只需要设置

"noResolve": false

true,它终于奏效了。

答案 1 :(得分:0)

在我们的项目中,错误是通过在 include 键中包含打字稿文件和定义来解决的,如下所示

  "include": ["global.d.ts", "./app/**/*.tsx", "./app/**/*.ts"],

app 包含 typescript 文件, global.d.ts 包含本地包的声明,如下

declare module 'uicomponents-react-native';
declare module '@styles';
declare module '@styles/*';

declare module '@common';

declare module '@constants';
declare module '@constants/*';

declare module '@utils/*';
declare module '@utils';

declare module '@helper/*';
declare module '@helper';