将 Node.js SDK 导入在 Node 服务器中运行的 Typescript 出现错误“ReferenceError: require is not defined”

时间:2021-03-05 21:34:32

标签: javascript node.js typescript npm

我正在开发用于服务器端使用的 Node.js SDK,并在尝试使用 Typescript 将其导入我的 express 应用程序时遇到了这个问题“ReferenceError: require is not defined”。最初我没有生成 .d.ts 文件,所以我导入了 Typescript 并生成了声明文件,但仍然出现错误。 SDK包中我的index.js:

const myDep = require('./myDep');
const client = function (sdkKey) {
    const c = {};
    c.do = (user) => {};
    return c;
}

module.exports = client;

生成的 index.d.ts 文件如下所示:

export = client;
declare function client(sdkKey: any): {
    do(user: any): void;
};

这是我的 SDK 包中的 tsconfig.json:

{
  "include": ["src/**/*", "src/index.d.ts"],
  "compilerOptions": {
    "resolveJsonModule": true,
    "target": "es6",
    "lib": ["es6"],
    "module": "commonjs",
    "allowJs": true,
    "checkJs": true,
    "declaration": true,
    "emitDeclarationOnly": true,
    "moduleResolution": "Node",
    "outDir": "./dist"
  }
}

我使用 npm link 将它导入到运行 typescript 的节点服务器中,并在我的 app.ts 文件中使用 import

import * as mySDK from 'my-node-js-sdk';

1 个答案:

答案 0 :(得分:0)

最后想通了,通过添加一个用于类型声明的 index.d.ts 文件来修复它。还发现我的项目中有几个地方使用 ES6 导出而不是模块,因此也必须修复这些地方。