我正在开发用于服务器端使用的 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';
答案 0 :(得分:0)
最后想通了,通过添加一个用于类型声明的 index.d.ts 文件来修复它。还发现我的项目中有几个地方使用 ES6 导出而不是模块,因此也必须修复这些地方。