首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sequelize当使用glob配置与‘When’编译器(使用NestJS)时,无法解析模型模块

sequelize当使用glob配置与‘When’编译器(使用NestJS)时,无法解析模型模块
EN

Stack Overflow用户
提问于 2019-12-04 21:25:54
回答 1查看 1.2K关注 0票数 1

我正在建立sequelize-typescript,然后添加模型:

代码语言:javascript
复制
    import appRoot from 'app-root-path'

    connection = new Sequelize({... connection details})
    const appGlobPattern = join(appRoot.toString(), 'src/**/entities/*.entity.ts')
    // appGlobPattern = absolute path to the root of the project (i.e. C:/Users/user/my-project/)
    this.connection.addModels([appGlobPattern])

尝试在sequelize-service (https://github.com/RobinBuschmann/sequelize-typescript/blob/1c34e87c968b1c8333ef6467c2dd44e069e06fa8/src/sequelize/sequelize/sequelize-service.ts#L57)中执行sequelize-service行时引发错误

引发一个错误,因为文件解析程序无法解析该文件(该文件存在):

'C:\Users\user\my-project\src\entities\my-model.entity‘错误:找不到模块

全栈轨道

代码语言:javascript
复制
Error: Cannot find module 'C:\Users\........\notification\entities\communication-channel.entity'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
    at Function.Module._load (internal/modules/cjs/loader.js:562:25)
    at Module.require (internal/modules/cjs/loader.js:692:17)
    at require (internal/modules/cjs/helpers.js:25:18)
    at glob.sync.filter.map.filter.map.fullPath (C:\Users\........\notification\node_modules\sequelize-typescript\dist\sequelize\sequelize\sequelize-service.js:44:32)
    at Array.map (<anonymous>)
    at arg.reduce (C:\Users\........\notification\node_modules\sequelize-typescript\dist\sequelize\sequelize\sequelize-service.js:43:18)
    at Array.reduce (<anonymous>)
    at Object.getModels (C:\Users\........\notification\node_modules\sequelize-typescript\dist\sequelize\sequelize\sequelize-service.js:35:20)
    at Sequelize.addModels (C:\Users\........\notification\node_modules\sequelize-typescript\dist\sequelize\sequelize\sequelize.js:34:44)
    at DatabaseConnection._addModelsToConnection (C:\Users\........\notificationn\dist\database\classes\database-connection.js:33:25)
    at DatabaseConnection.createConnection (C:\Users\........\notification\dist\database\classes\database-connection.js:23:14)
    at InstanceWrapper.useFactory [as metatype] (C:\Users\........\notification\dist\database\providers\database-connection-pool.provider.js:13:30)
    at process._tickCallback (internal/process/next_tick.js:68:7)
    at Function.Module.runMain (internal/modules/cjs/loader.js:834:11)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)

在NestJS默认使用的tsc编译器中,似乎有可能出现这种情况。或者模块加载器对绝对文件路径不友好。

更多详细信息:

“版本”:"5.21.2"

  • sequelize-typescript:“版本”:"1.0.0"

  • typescript“版本”:"3.7.2"

这些是我的tsconfig设置:

代码语言:javascript
复制
{
  "compilerOptions": {
    "module": "CommonJS",
    "moduleResolution": "node",
    "declaration": true,
    "removeComments": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "esModuleInterop": true,
    "target": "ES6",
    "sourceMap": true,
    "outDir": "./dist",
    "baseUrl": "./",
    "incremental": true,
    "paths": {
      "express": ["src/multi-tenancy/types/*"]
    }
  },
  "exclude": ["node_modules", "dist"]
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-04 21:30:48

您不应该将src作为文件路径的一部分,因为一旦您将代码从类型记录编译为JavaScript,您的代码现在就位于dist中,而src文件夹在上下文中丢失了。您还应该将.ts更改为.js,因为这将在运行时解析文件。另一种选择是使用类似于join(__dirname, '{dist,src}/**/entities/*.entity.{js,ts}')的glob,这样您就可以在不改变srcdist之间代码的情况下查看两者。

注意:join来自path模块

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59184878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档