使用swagger代码生成了一个Typescript-angular项目,然后通过运行npm install构建它。然后,我编写了一个测试类,并运行tsc将其编译为javascript,以便可以使用node运行测试类。当我尝试运行节点testing.js命令时,收到错误消息“使用类装饰器时需要reflect-metadata shim”。由于这并不意味着它是一个完整的应用程序,因此我没有index.ts或main.ts文件,因此遇到的其他解决方案(例如导入)也无法正常工作。当我运行npm list时,我看到我的节点模块中确实有反射元数据。这是我的tsconfig文件:
{
"compilerOptions": {
"types": ["reflect-metadata"],
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"noImplicitAny": false,
"suppressImplicitAnyIndexErrors": true,
"target": "es2015",
"module": "commonjs",
"moduleResolution": "node",
"removeComments": true,
"sourceMap": true,
"outDir": "./dist",
"noLib": false,
"declaration": true,
"lib": [ "es6", "dom" ]
},
"exclude": [
"node_modules",
"dist"
],
"filesGlob": [
"./model/*.ts",
"./api/*.ts"
]
}
有节点时,有没有办法从节点运行js文件?
答案 0 :(得分:0)
所以看来我找到了可行的解决方案。我加了
import "reflect-metadata"
到打字稿文件的第一行(它必须是第一行,否则在导入之前它会使用修饰符)。