我正在尝试使用像this这样的typescript库来创建一个现有的express nodejs应用程序。但它不起作用。当我导入库函数时,它给出了一些错误,比如不能读取未定义的属性‘构造函数’。
我也正在将ts文件编译成js文件。有没有其他方法可以在现有的node js应用程序中使用typescript?
下面是错误堆栈
"stack": "TypeError: Cannot read property 'constructor' of undefined\n at MetadataStorage.getAncestors (/Users/saurabhkumar/platform/rest-api-service/node_modules/class-transformer/metadata/MetadataStorage.js:199:73)\n at MetadataStorage.getMetadata (/Users/saurabhkumar/platform/rest-api-service/node_modules/class-transformer/metadata/MetadataStorage.js:146:36)\n at MetadataStorage.getExposedMetadatas (/Users/saurabhkumar/platform/rest-api-service/node_modules/class-transformer/metadata/MetadataStorage.js:91:21)\n at MetadataStorage.getExposedProperties (/Users/saurabhkumar/platform/rest-api-service/node_modules/class-transformer/metadata/MetadataStorage.js:97:21)\n at TransformOperationExecutor.getKeys (/Users/saurabhkumar/platform/rest-api-service/node_modules/class-transformer/TransformOperationExecutor.js:328:70)\n at TransformOperationExecutor.transform (/Users/saurabhkumar/platform/rest-api-service/node_modules/class-transformer/TransformOperationExecutor.js:110:29)\n at ClassTransformer.plainToClass (/Users/saurabhkumar/platform/rest-api-service/node_modules/class-transformer/ClassTransformer.js:17:25)\n at plainToClass (/Users/saurabhkumar/platform/rest-api-service/node_modules/class-transformer/index.js:20:29)\n at Object.<anonymous> (/Users/saurabhkumar/platform/rest-api-service/build/src/api/controllers/source.controller.js:67:22)\n at Generator.next (<anonymous>)\n at /Users/saurabhkumar/platform/rest-api-service/build/src/api/controllers/source.controller.js:7:71\n at new Promise (/Users/saurabhkumar/platform/rest-api-service/node_modules/es6-shim/es6-shim.js:2393:11)\n at __awaiter (/Users/saurabhkumar/platform/rest-api-service/build/src/api/controllers/source.controller.js:3:12)\n at exports.create (/Users/saurabhkumar/platform/rest-api-service/build/src/api/controllers/source.controller.js:58:38)\n at Layer.handle [as handle_request] (/Users/saurabhkumar/platform/rest-api-service/node_modules/express/lib/router/layer.js:95:5)\n at next (/Users/saurabhkumar/platform/rest-api-service/node_modules/express/lib/router/route.js:137:13)\n at /Users/saurabhkumar/platform/rest-api-service/build/src/api/controllers/auth.controller.js:12:13\n at Layer.handle [as handle_request] (/Users/saurabhkumar/platform/rest-api-service/node_modules/express/lib/router/layer.js:95:5)\n at next (/Users/saurabhkumar/platform/rest-api-service/node_modules/express/lib/router/route.js:137:13)\n at Route.dispatch (/Users/saurabhkumar/platform/rest-api-service/node_modules/express/lib/router/route.js:112:3)\n at Layer.handle [as handle_request] (/Users/saurabhkumar/platform/rest-api-service/node_modules/express/lib/router/layer.js:95:5)\n at /Users/saurabhkumar/platform/rest-api-service/node_modules/express/lib/router/index.js:281:22"发布于 2020-02-05 21:04:17
如果你只想要这里和前面的打字脚本,而不关心已经写好的js文件,你可以把它作为js文件……
确保使用allowJs: true配置了tsconfig,或者只使用此选项运行tsc。
查看allowJs选项,首先是编译器选项:https://www.typescriptlang.org/docs/handbook/compiler-options.html#compiler-options
https://stackoverflow.com/questions/60075633
复制相似问题