我正在尝试让下面的示例正常工作:
https://github.com/typeorm/javascript-example/tree/master/src/app3-es6
我遇到了以下错误:
Error
at new RepositoryNotFoundError (...\node_modules\typeorm\connection\error\RepositoryNotFoundError.js:24:23)
at Connection.findRepositoryAggregator (...\node_modules\typeorm\connection\Connection.js:513:19)
at Connection.getRepository (...\node_modules\typeorm\connection\Connection.js:405:21)
at ...\index.js:27:37name: 'RepositoryNotFoundError',
message: 'No repository for "Post" was found. Looks like this entity is not registered in current "default" connection?'这是index.js
const typeorm = require("typeorm"); // import * as typeorm from "typeorm";
const Post = require("./model/Post"); // import {Post} from "./model/Post";
// import Post from './model/Post.js';
const Category = require("./model/Category"); // import {Category} from "./model/Category";
typeorm.createConnection({
driver: {
type: "oracle",
host: "localhost",
port: 1521,
username: "uname",
password: "pwd",
sid: "dev"
},
entities: [
__dirname + "/entity/*.js"
],
autoSchemaSync: true
}).then(function (connection) {
console.log(connection);
let post = new Post.Post();
post.title = "Control flow based type analysis";
post.text = "TypeScript 2.0 implements a control flow-based type analysis for local variables and parameters.";
post.categories = [new Category.Category(0, "TypeScript"), new Category.Category(0, "Programming")];
let postRepository = connection.getRepository(Post.Post);
postRepository.persist(post)
.then(function(savedPost) {
console.log("Post has been saved: ", savedPost);
console.log("Now lets load all posts: ");
return postRepository.find();
})
.then(function(allPosts) {
console.log("All posts: ", allPosts);
});
}).catch(function(error) {
console.log("Error: ", error);
});模型位于/ Post.js /中
/*export */ class Post {
constructor(id, title, text, categories) {
this.id = id;
this.title = title;
this.text = text;
this.categories = categories;
}
}
module.exports = {
Post: Post
};Category.js
/*export */ class Category {
constructor(id, name) {
this.id = id;
this.name = name;
}
}
module.exports = {
Category: Category
};/entity/中的PostSchema.js
const Post = require("../model/Post"); // import {Post} from "../model/Post";
const Category = require("../model/Category"); // import {Category} from "../model/Category";
const PostSchema = {
target: Post,
columns: {
id: {
primary: true,
type: "int",
generated: true
},
title: {
type: "string"
},
text: {
type: "text"
}
},
relations: {
categories: {
target: Category,
type: "many-to-many",
joinTable: true,
cascadeInsert: true
}
}
};
module.exports = {
PostSchema: PostSchema
};CategorySchema.js
const Category = require("../model/Category"); // import {Category} from "../model/Category";
const CategorySchema = {
target: Category,
columns: {
id: {
primary: true,
type: "int",
generated: true
},
name: {
type: "string"
}
}
};
module.exports = {
CategorySchema: CategorySchema
};我不知道我做错了什么
发布于 2018-03-05 22:53:43
看起来你的实体导入不起作用。如果通过通配符导入:
entities: [
__dirname + "/entity/*.js"
],`确保你的模型被编译成js。您也可以直接导入
createConnection({
...,
entities: [
Post,
...
],}).then(...)发布于 2019-07-22 14:09:40
对于那些正在使用typescript并遇到此问题的用户:请注意,在指定实体路径时,需要同时包含ts和js文件后缀:
在本地运行时使用的
ts在通过tsc.进行生产构建时使用的ts-node
js代码:
import * as path from 'path';
// ...
entities: [
// assuming _dirname is your project root
path.resolve(__dirname, '**/*.entity{.ts,.js}'),
],发布于 2019-11-05 12:45:12
几个月来,我遇到了同样的问题,最终我发现自己做错了什么。
导入实体时,请确保文件名完全匹配。它不会抛出任何错误,但在运行时,它会抛出上面的错误。
例如。在实体或模型类中,如果我们像这样导入,
import { FooClass } from "./foo-Class.model";它不同于
import { FooClass } from "./foo-class.model";它不会显示任何错误,但当您尝试调用该表时,它将显示完全相同的错误。
https://stackoverflow.com/questions/45989574
复制相似问题