我"module": "es2020"
在其 tsconfig 中有一个用 typescript 编写的快速服务器。
我还es2020
为我的 graphql API 开发了另一个模块,仍然在 typescript 中,并且该模块使用带有此类命名导入的 mongoose:
import { Types } from 'mongoose'
当我使用tsc
. 但是运行的快递服务器
nodemon --watch './**/*.ts' --exec 'node --experimental-specifier-resolution=node --loader ts-node/esm' src/index.ts
无法处理名为 import 的猫鼬。
import { Types } from 'mongoose';
^^^^^
SyntaxError: Named export 'Types' not found. The requested module 'mongoose' is a CommonJS module, which may not support all module.exports as named exports.
CommonJS modules can always be imported via the default export, for example using:
import pkg from 'mongoose';
const { Types } = pkg;
解决方案#1
import mongoose from 'mongoose'
并替换Types
为mongoose.Types
.
但既然tsc
可以处理名为 import 的 mongoose,我希望它也可以让 ts-node 能够这样做。
解决方案#2
切换到commonjs
,我可以在我的 graphql 模块中保留导入/导出语法并将其编译为 cjs 模块。但是我必须在我的快速服务器中使用 cjs 语法,我不想这样做。