如何在打字稿中进行模块解析以输出节点?

How to do module resolution in typescript to output for node?

tsconfig.json

{
  "compilerOptions": {
    "baseUrl": "./",
    "allowJs": false,
    "strict": true,
    "target": "es6",
    "module": "commonjs",
    "lib": ["dom", "es6", "es5", "es2017", "esnext.asynciterable"],
    "sourceMap": true,
    "moduleResolution": "node",
    "paths": {
      "src/*": ["src/*"]
    },
    "declaration": true,
    "rootDir": "./src",
    "outDir": "dist"
  },
  "exclude": ["dist"],
  "include": [ "src"]
}

原始文件夹结构

src /
  util/
    getSomething.ts
  index.ts

输出文件夹结构

dist /
  util/
    getSomething.js
  index.js

index.ts

import getSomething from 'src/util/getSomething';

package.json 脚本

{
"build": "tsc && tspath -f",
"start": "node dist/index.js"
}

构建工作正常,但是当我 运行 启动时出现错误。 有没有办法获得基于根的模块解析? 我按照这个例子(只是用 src 替换 ~),它给了我这个问题。 除非有 tspath 的替代解决方案。 https://haseebmajid.dev/blog/better-imports-with-babel-tspath

注:我用的是windows10.

npm start

Error: Cannot find module './src\util\getSomething' Require stack: c:\apps\example-typescript-node\dist\index.js

在这里回答: https://github.com/duffman/tspath/issues/33

我已经解决了我的问题。我必须确保我的 rootDir 是 ./ 而不是 src。 然后在 dist/src/ 而不是 dist/

内定位 index.js

tsconfig.json

{
  "compilerOptions": {
    "rootDir": "./"
  }
}

package.json

{
"build": "tsc && tspath -f",
"start": "node dist/src/index.js"
}