TypeScript无法理解Node.js库中的“导入”获取SyntaxError:意外的标识符?

问题描述

我在Node.js中使用nanoid库,但是我在TypeScript中编写后端。

当我尝试编译TypeScript时,我得到:

/project/node_modules/nanoid/async/index.js:1
import crypto from 'crypto'
       ^^^^^^

SyntaxError: Unexpected identifier
    at Module._compile (internal/modules/cjs/loader.js:872:18)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:947:10)
    at Module.load (internal/modules/cjs/loader.js:790:32)
    at Function.Module._load (internal/modules/cjs/loader.js:703:12)
    at Module.require (internal/modules/cjs/loader.js:830:19)
    at require (internal/modules/cjs/helpers.js:68:18)
    at Object.<anonymous> (/project/dist/utils/generateId.js:4:17)
    at Module._compile (internal/modules/cjs/loader.js:936:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:947:10)
    at Module.load (internal/modules/cjs/loader.js:790:32)

这是导致它的代码段:

import { customAlphabet } from "nanoid/async";

我认为这自然会起作用?

我的tsconfig.json看起来像这样:

{
  "compilerOptions": {
    "module": "commonjs","esModuleInterop": true,"declaration": true,"removeComments": true,"emitDecoratorMetadata": true,"experimentalDecorators": true,"target": "es2017","sourceMap": true,"outDir": "./dist","baseUrl": "./","incremental": true,"resolveJsonModule": true,"paths": {
      "*": ["node_modules/*","src/*"]
    }
  }
}

我的节点版本为v12.10.0,而我的打字稿版本为v3.7.4

解决方法

那行也不应该 import { crypto } from 'crypto' 要么 import * as crypto from 'crypto'

,

尝试这个import * as crypto from 'crypto'