TypeScript导入模块路径

时间:2019-05-08 13:54:19

标签: typescript

我有以下文件:

myProjectRoot/src/server.ts

在其中具有:

import testRouter from 'module/lib';

我有一个库,可在以下位置导出默认值:

myProjectRoot/src/module/lib.ts

我的myProjectRoot/tsconfig.json文件:

{
    "compilerOptions": {
        "module": "commonjs",
        "target": "es6",
        "lib": [
            "es6"
        ],
        "sourceMap": true,
        "baseUrl": "./src/"
    },
    "exclude": [
        "node_modules"
    ]
}

我收到错误消息:[ERROR] 15:50:42 Error: Cannot find module 'module/lib'

1 个答案:

答案 0 :(得分:1)

您在这里有两个选择。

使用相对导入

这是最简单的选项。只需在导入内容时指定相对路径即可。

import testRouter from './module/lib';

设置导入别名

您可以编辑tsconfig.json,以便解析您键入的路径。

{
    "compilerOptions": {
        "baseUrl": "./src/",
        "paths": {
            "./*": ["./src/*"]
        }
    }
}

我们可以看到,TypeScript现在可以正确解析导入。

Image of VS Code resolving the import correctly.

注意::以上内容仅告诉TypeScript编译器可以从src解析路径 ,但不会影响代码的发射。例如,import语句仍被编译为以下内容:

const lib_1 = require("module/lib");

这意味着除非您拥有另一个可以将require转换为相对路径的构建工具,否则即使TypeScript认为可以,导入也不会在运行时起作用。

>

Image of Node throwing due to bad module resolution.