首页 > 解决方案 > 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.

标签: javascriptnode.jstypescriptecmascript-6ts-node

解决方案


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


推荐阅读