在打字稿中导入 hashids 时出现异常

Exception when importing hashids in typescript

我正在尝试在 Typescript 中导入 hashids

您可以从 here

克隆代码

==========index.ts==========

import Hashids from "hashids";
const encoder = new Hashids();

但我收到下一个错误:

===========控制台=========

export { Hashids as default };
^^^^^^
SyntaxError: Unexpected token 'export'
    at Module._compile (internal/modules/cjs/loader.js:895:18)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:995:10)
    at Module.load (internal/modules/cjs/loader.js:815:32)
    at Function.Module._load (internal/modules/cjs/loader.js:727:14)
    at Module.require (internal/modules/cjs/loader.js:852:19)
    at require (internal/modules/cjs/helpers.js:74:18)
    at Object.<anonymous> (/var/www/persona-service/src/Example.ts:1:1)
    at Module._compile (internal/modules/cjs/loader.js:959:30)
    at Module.m._compile (/var/www/persona-service/node_modules/ts-node/src/index.ts:814:23)
    at Module._extensions..js (internal/modules/cjs/loader.js:995:10)

这是我的tsconfig.json

{
  "compilerOptions": {
    "incremental": true,
    "moduleResolution": "node",
    "module": "CommonJS",
    "esModuleInterop": true,
    "target": "es6",
    "types": [
      "node",
      "express",
      "hashids"
    ]
  },
  "include": [
    "src/**/*"
  ],
  "exclude": [
    "node_modules",
    "**/*.spec.ts"
  ]
}

我也在使用 nodemon 这个配置:

{
  "watch" : ["src"],
  "ext": "ts",
  "exec": "ts-node ./src/index.ts"
}

这里会发生什么?

检查 hashids 包的 git 存储库发现了与某些节点版本的导入相关的问题:

hashids issue on the repo

提到的解决方法是使用 require 而不是 import

const Hashids = require('hashids/cjs');

我希望这能让你回到正轨。