在 NodeJS 项目中使用 TypeScript 中的路径

don*_*don 6 import node.js typescript

我正在尝试在 NodeJS 项目中使用该paths属性tsconfig.json

tsconfig.json我有这样的事情:

"baseUrl": ".",
"paths": {
  "@myApp/server/*": [
    "server/src/*"
  ],
  "@myApp/common/*": [
    "common/src/*"
  ]
},
Run Code Online (Sandbox Code Playgroud)

运行tsc按预期输出所有 JS 文件,但它们保留@myApp...导入。因此,node不会运行,因为它无法解析所有具有 as path 的模块@myApp...

我找不到将paths我设置tsconfig.json的值转换为node. 我只在 SO 上发现了这个问题,但它已经过时了,并没有找到一个干净的解决方案。

我们是否有办法以我们能够使用的方式将 TS 转换为 JS paths

Fac*_*alm 13

如果这里有人使用 nodejs 和tsconfig-paths. 您可以使用以下命令使绝对路径起作用:

// With ts-node    
ts-node -r tsconfig-paths/register src/main.js

// With node    
node -r ts-node/register/transpile-only -r tsconfig-paths/register dist/main.js
Run Code Online (Sandbox Code Playgroud)

从这里得到这个: https: //github.com/dividab/tsconfig-paths/issues/61


don*_*don 2

直到今天,我一直按照接受的答案中的建议使用tspathbaseUrl: \'../\' ,但我开始遇到一些具有 as 的相对路径的问题。

\n\n

我切换到webpack基于方法,使用以下webpack.config.ts配置:

\n\n
import { TsConfigPathsPlugin } from \'awesome-typescript-loader\';\nimport * as fs from \'fs-extra\';\nimport { join } from \'path\';\nimport * as webpack from \'webpack\';\n\nconst packageConfig = fs.readJSONSync(\'./package.json\', { encoding: \'utf-8\' });\n\nconst externals = {};\nfor (const packageName in packageConfig.dependencies)\n  externals[packageName] = packageName;\n\nconst serverConfig: webpack.Configuration = {\n  entry: {\n    index: \'./src/index.ts\'\n  },\n  resolve: {\n    extensions: [\'.ts\', \'.js\'],\n    plugins: [\n      new TsConfigPathsPlugin({ configFileName: \'tsconfig.json\' })\n    ]\n  },\n  target: \'node\',\n  node: {\n    __dirname: false\n  },\n  externals,\n  output: {\n    path: join(__dirname, \'dist\'),\n    filename: \'[name].js\',\n    library: \'[name]\',\n    libraryTarget: \'umd\'\n  },\n  module: {\n    rules: [{\n      test: /\\.ts$/,\n      loader: \'awesome-typescript-loader\'\n    }]\n  },\n  plugins: [\n    new webpack.BannerPlugin(`Copyright \xc2\xa9 2018-${new Date().getFullYear()} BOHR. All rights reserved.`)\n  ],\n  mode: \'production\',\n  optimization: {\n    minimize: false\n  }\n};\n\n// tslint:disable-next-line:no-default-export\nexport default [serverConfig];\n
Run Code Online (Sandbox Code Playgroud)\n\n

请注意导入,您将需要添加一些包才能使用此配置。

\n