@ Types / Sequelize错误TS1086:无法在环境上下文中声明访问器

时间:2019-11-11 13:37:16

标签: node.js typescript types sequelize.js tsc

我有一个项目在运行'tsc'时显示此错误:

../modules/node_modules/sequelize/types/lib/transaction.d.ts:33:14 - error TS1086: An accessor cannot be declared in an ambient context.

33   static get LOCK(): LOCK;
                ~~~~

../modules/node_modules/sequelize/types/lib/transaction.d.ts:40:7 - error TS1086: An accessor cannot be declared in an ambient context.

40   get LOCK(): LOCK;
         ~~~~

我的版本是:

  • “ @ types / sequelize”:“ ^ 4.28.6”
  • “续集”:“ ^ 5.8.10”
  • “ sequelize-typescript”:“ 1.0.0-beta.4”

该项目在nodemon上正常运行,但是在尝试编译打字稿时失败。有人知道这个错误吗?

谢谢。

3 个答案:

答案 0 :(得分:34)

我有 Angular 8 。它正在使用3.4.5的打字稿版本。因此,请按照以下步骤解决此问题。

步骤1)转到 tsconfig.json 文件

第2步)在“ compilerOptions”对象中添加 skipLibCheck:true 。这个对我有用。

"compilerOptions": {
    "module": "commonjs",
    "moduleResolution": "node",
    "strict": true,
    "target": "es5",
    "declaration": true,
    "declarationDir": "dist-debug/",
    "skipLibCheck": true, /// Needs to be true to fix wrong alias types being used

  },

答案 1 :(得分:8)

您需要使用打字稿3.7。

from typescript 3.7 release notes:

To detect the issue around accessors, TypeScript 3.7 will now emit get/set accessors in .d.ts files so that in TypeScript can check for overridden accessors.

因此,sequelize可能是使用打字稿3.7编译的,并且会发出以前版本无法理解的定义文件。因此,您需要升级到TypeScript 3.7或使用早期版本的sequelize。

答案 2 :(得分:7)

设置"skipLibCheck": true对我有用。