【发布时间】:2021-12-06 23:22:47
【问题描述】:
这是我得到的错误
./src/core/providers/todoApi/TodoApiProvider.ts 10:14 模块解析失败:意外字符“@”(10:14) 使用这些加载器处理了文件:
- ./node_modules/react-scripts/node_modules/@pmmmwh/react-refresh-webpack-plugin/loader/index.js
- ./node_modules/babel-loader/lib/index.js 您可能需要一个额外的加载器来处理这些加载器的结果。 |类 TodoApiProvider {
构造函数(@inject(TYPES.HttpClient) | httpClient) { | this.httpClient = void 0;
TodoApiProvider.ts
class DefaultTodoApiProvider implements TodoApiProvider {
private httpClient: HttpClient;
// @inject(TYPES.HttpClient) return error
constructor(@inject(TYPES.HttpClient) httpClient: HttpClient) {
this.httpClient = Dependency.get(TYPES.HttpClient);
}
async getTodoById(id: string) {
const data = await this.httpClient.get(
`https://jsonplaceholder.typicode.com/todos/${id}`
);
return data;
}
}
decorate(injectable(), TodoApiProvider);
export default DefaultTodoApiProvider;
如果我将@inject(TYPES.HttpClient) 放在private httpClient: HttpClient; 上方,则会出现另一个错误Cannot access 'TYPES' before initialization。
.babelrc
{
"presets": [
...,
"@babel/preset-typescript"
],
"plugins": [
...,
"babel-plugin-transform-typescript-metadata",
["@babel/plugin-proposal-decorators", { "legacy": true }],
["@babel/plugin-proposal-class-properties", { "loose": true }]
],
"env": {
"test": {
"plugins": [
"transform-require-context",
"babel-plugin-transform-typescript-metadata",
"babel-plugin-parameter-decorator"
]
}
}
}
tsconfig.js
{
"compilerOptions": {
...,
"emitDecoratorMetadata": false,
},
}
【问题讨论】:
标签: javascript reactjs constructor create-react-app inversifyjs