繁体   English   中英

typescript 路径分辨率问题。 (错误:找不到模块'[module_name]')

[英]Issue with typescript path resolution. (Error: Cannot find module '[module_name]')

我有一个带有 typescript 的节点项目设置。 一切都很好,但最近我一直想实现路径解析。 为什么这么麻烦?

这是我的项目架构:

└───src
    ├───models
    ├──────Person.ts
    ├───query
    ├──────index.ts
    └───index.ts
├───package.json
└───tsconfig.json

我的 tsconfig 设置如下:

{
  "compilerOptions": {
    "moduleResolution": "node",
    "rootDir": "./src",
    "outDir": "./build",
    "baseUrl": "./src",
    "paths": {
      "@models/*": [ "models/*" ]
    }
  },
  "exclude": [ "node_modules", "build" ],
  "include": [ "src/**/*.ts" ],
}

在 VS 代码中一切正常。
我可以使用以下方法轻松地从我的索引文件中导入 Person.ts:

import Person from '@models/Person'.

tsc 构建时没有任何错误或警告。

但是当我跑步时

node build/index.js

它给了我以下错误:

Error: Cannot find module '@models/Person'

在 typescript 编译之后,似乎路径没有正确转换。

任何想法?

这是我最终寻求的解决方案:
我已将cross-envtsconfig-path添加到我的package.json中。
允许我像这样运行我的项目:

"scripts": {
  "start": "cross-env TS_NODE_BASEURL=./build node --require tsconfig-paths/register ./build/index.js",
  "build": "tsc",
  "watch": "tsc-watch --onSuccess \"yarn start\""
},

请注意,我使用cross-env环境 package 只是因为我在 windows 上。

我仍然不明白为什么路径解析不是 typescript 编译所固有的,但无论如何。 它就像一个魅力! 在 Linux 和 Windows 上

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM