Typescript和babel-plugin-module-resolver:VS Code无法解析导入

2 typescript babeljs visual-studio-code

我目前正在学习使用打字稿,但是VS Code有问题。我已经使用Babel 7和几个插件建立了一个基本项目。我使用命令npm run dev运行脚本。这是我的依赖项的完整列表:

//package.json
"scripts": {
  "dev": "nodemon src/index.ts --extensions \".ts\" --exec babel-node"
},
"devDependencies": {
  "@babel/cli": "^7.1.2",
  "@babel/core": "^7.1.2",
  "@babel/helper-plugin-utils": "^7.0.0",
  "@babel/node": "^7.0.0",
  "@babel/plugin-proposal-async-generator-functions": "^7.1.0",
  "@babel/plugin-proposal-class-properties": "^7.1.0",
  "@babel/plugin-proposal-decorators": "^7.1.2",
  "@babel/plugin-proposal-optional-catch-binding": "^7.0.0",
  "@babel/plugin-proposal-optional-chaining": "^7.0.0",
  "@babel/plugin-transform-modules-commonjs": "^7.1.0",
  "@babel/plugin-transform-typescript": "^7.1.0",
  "babel-plugin-module-resolver": "^3.1.1"
}
Run Code Online (Sandbox Code Playgroud)

以下是我的2个.ts文件的内容。

// src/script.ts
export default function (arg:string): string {
  return arg;
};

// src/index.ts
import Fn from "@/script";
console.log( Fn("Hello World") );
Run Code Online (Sandbox Code Playgroud)

这是我的Babel配置文件:

//babel.config.js
module.exports = {
  "plugins": [
    ["@babel/plugin-transform-typescript"],
    ["@babel/plugin-transform-modules-commonjs"],
    ["@babel/plugin-proposal-async-generator-functions"],
    ["@babel/plugin-proposal-optional-catch-binding"],
    ["@babel/plugin-proposal-optional-chaining"],
    ["@babel/plugin-proposal-decorators", { "legacy": true }],
    ["@babel/plugin-proposal-class-properties", { "loose": true }],//must be after @babel/plugin-proposal-decorators

    ["module-resolver", {
      //"root": ["./src", "./test"],
      "alias": {
        //"__root": ".",
        "@": "./src",
        //"#": "./src/assets",
        //"_": "./src/assets/_",
        //"!": "./static"
      },
    }]
  ]
};
Run Code Online (Sandbox Code Playgroud)

还有我的Typescript配置文件:

// tsconfig.json
{
  "compilerOptions": {
      "baseUrl": ".",
      "paths": {
        "@": ["./src"]
      }
  }
}
Run Code Online (Sandbox Code Playgroud)

运行此代码时,它看起来不错,并且在控制台中看到“ Hello World”。但是,VS Code似乎不理解路径“ @ / script”。它以红色加下划线,并带有提示信息

[ts]找不到模块'@ / script'。

如果我不使用babel-plugin-module-resolver插件,而使用路径“ ./script”,则不会出现此问题。有办法解决吗?

谢谢!

Mat*_*hen 5

您的pathsin 语法tsconfig.json错误。它应该是:

"paths": {
  "@/*": ["./src/*"]
}
Run Code Online (Sandbox Code Playgroud)

请参阅文档本节中的第二个示例。