【问题标题】:Nestjs/TypeORM Cannot connect to Docker MariaDBNestjs/TypeORM 无法连接到 Docker MariaDB
【发布时间】:2019-08-02 20:47:15
【问题描述】:

每当我运行包含 nodejs 11.10 和 mariadb 的 docker 映像时,我都会收到以下错误:

[Nest] 16 - 3/12/2019, 11:24:02 AM [TypeOrmModule] 无法 连接到数据库。重试 (9)... +3587msError: EPERM: 不允许操作,scandir '/proc/1/map_files/559e63542000-559e656d1000' 在 Object.readdirSync (fs.js:807:3) 在 GlobSync._readdir (/app/node_modules/glob/sync.js:288:41) 在 GlobSync._readdirInGlobStar (/app/node_modules/glob/sync.js:267:20) 在 GlobSync._readdir (/app/node_modules/glob/sync.js:276:17) 在 GlobSync._processReaddir (/app/node_modules/glob/sync.js:137:22) 在 GlobSync._process (/app/node_modules/glob/sync.js:132:10) 在 GlobSync._processGlobStar (/app/node_modules/glob/sync.js:380:10) 在 GlobSync._process (/app/node_modules/glob/sync.js:130:10) 在 GlobSync._processGlobStar (/app/node_modules/glob/sync.js:383:10) 在 GlobSync._process (/app/node_modules/glob/sync.js:130:10)

当我使用mysql:latestmysql:5.6 时会发生同样的问题。这是我的连接:

TypeOrmModule.forRoot({
  type: 'mariadb',
  host: '172.17.0.1',
  port: 3306,
  username: 'nest',
  password: 'secret',
  database: 'nest',
  entities: [__dirname + '/**/*.entity{.ts,.js}'],
  synchronize: true,
}),

有没有其他人遇到过这个问题,所以,知道如何解决它吗? 谢谢!

【问题讨论】:

    标签: javascript docker mariadb nestjs typeorm


    【解决方案1】:

    由于entities: [__dirname + '/**/*.entity{.ts,.js}'], 出现此问题。因为__dirname 不会以某种方式解析到您的项目目录,而是'',它会尝试扫描您的整个驱动器以查找实体,并且显然没有这样做的权限。

    解决方法

    不要扫描实体,而是明确列出它们:

    entities: [UserEntity, ProductEntity],
    

    如果你使用 webpack for hmr,你也可以尝试下面的配置来正确解析__dirname

    webpack.config.js:
    node: {
      __dirname: false,
    },
    

    【讨论】:

    • 我创建了一个没有 dirname 部分的 ormconfig.json 文件并修复了它。谢谢!
    【解决方案2】:

    这对我有帮助:

    entities: [__dirname + '/../**/*.entity{.ts,.js}']
    

    注意起始路径'/../'表示从绝对路径开始扫描。

    【讨论】:

      猜你喜欢
      • 2019-08-13
      • 2021-12-03
      • 1970-01-01
      • 2021-10-19
      • 2018-03-12
      • 1970-01-01
      • 2021-05-26
      • 1970-01-01
      • 2020-02-29
      相关资源
      最近更新 更多