我正在建立sequelize-typescript,然后添加模型:
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‘错误:找不到模块
全栈轨道
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"
这些是我的tsconfig设置:
{
"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"]
}发布于 2019-12-04 21:30:48
您不应该将src作为文件路径的一部分,因为一旦您将代码从类型记录编译为JavaScript,您的代码现在就位于dist中,而src文件夹在上下文中丢失了。您还应该将.ts更改为.js,因为这将在运行时解析文件。另一种选择是使用类似于join(__dirname, '{dist,src}/**/entities/*.entity.{js,ts}')的glob,这样您就可以在不改变src和dist之间代码的情况下查看两者。
注意:join来自path模块
https://stackoverflow.com/questions/59184878
复制相似问题