Javascript ts节点是否支持“@”样式的导入?如果是,如何设置?
我正在使用主express应用程序中的类创建一个命令行脚本 脚本位于以下文件夹中:Javascript ts节点是否支持“@”样式的导入?如果是,如何设置?,javascript,typescript,ts-node,Javascript,Typescript,Ts Node,我正在使用主express应用程序中的类创建一个命令行脚本 脚本位于以下文件夹中: bin/utils/ ├── sync-buyers.ts └── tsconfig.json 主要的express应用程序是in/app-use-uses-import'@/foo/bar/thing 这是在主应用程序的tsconfig.json中设置的,如下所示: "paths": { "@/*": ["*"], "*": [ "node_module
bin/utils/
├── sync-buyers.ts
└── tsconfig.json
主要的express应用程序是in/app-use-uses-import'@/foo/bar/thing
这是在主应用程序的tsconfig.json中设置的,如下所示:
"paths": {
"@/*": ["*"],
"*": [
"node_modules/*",
"app/typings/*"
]
}
},
"include": ["app/**/*", "test/**/*"],
"exclude": ["app/**/*.test.ts", "/__tests__/", "/__mocks__/", "/__snapshots__/", "app/**/__mocks__/"],
"files": ["typings/global.d.ts"]
脚本执行
我正在测试是否可以从主应用程序导入,因此我创建了一个sayHello函数
#!/usr/bin/env ts-node
/* tslint:disable */
import { sayHello } from '../../app/services/v2/oapp';
sayHello();
当我运行它时:
TSError: ⨯ Unable to compile TypeScript:
../../app/services/v2/oapp.ts(9,19): error TS2307: Cannot find module
'@/helpers/fetch'.
../../app/services/v2/oapp.ts(10,31): error TS2307: Cannot find module
'@/services/v2/buyer'.
../../app/services/v2/oapp.ts(11,51): error TS2307: Cannot find module
'@/http/HttpHeader'.
总结:
ts节点是否支持“@”类型的导入?如果是,我如何设置它 因此,TypeScript路径配置仅适用于TypeScript的类型解析和检查,这意味着它将允许TypeScript仅出于类型检查的目的理解这些导入,但它生成的代码不会自动将这些导入重写到正确的位置
有两种常见的解决方法:
更新节点解析器以了解TypeScript路径配置。生成的文件仍将通过@-名称引用这些路径
最常见的是,该模块用于此目的。您可以直接从node命令中要求该模块:
node -r tsconfig-paths/register main.js
重写生成的文件,以便@名称替换为真实的本地相对路径位置
这有一个独立的模块,-您只需在编译TypeScript后运行tspath,它就会用正确的路径更新生成的文件
如果您正在使用Webpack,还可以使用,这将负责配置Webpack的解析器以正确定位这些@名称路径
最后,如果您使用的是Babel,您可能会对Babel工具链的类似功能感兴趣,但是这里的缺点是它没有从tsconfig.json读取路径配置,因此您必须在这个插件的别名配置中复制路径配置
就我个人而言,如果这是一个直接使用tsc编译的节点脚本或服务器,我建议使用tsconfig路径;如果这是一个前端网页包构建,我建议使用tsconfig路径网页包插件