无法在 JavaScript 中使用我自己的 TypeScript 库
Cannot use my own TypeScript library in JavaScript
我一直在用一个看似简单的任务撞墙。如果对此有任何见解,我将不胜感激。
我正在用 TypeScript 编写一个私有库,用于 TypeScript 和我们公司的 JavaScript 项目。
该库运行良好,但我似乎无法将其导入 JavaScript。
TS 中的库
package.json
{
"name": "rr-comm-bus-js",
"version": "0.3.0",
"description": "",
"main": "lib/src/index.js",
"types": "lib/src/index.d.ts",
"scripts": {
"dev": "ts-node-dev --respawn src/dev/dev.ts",
"build": "rm -rf lib && tsc"
},
"keywords": [],
"dependencies": {
"redis": "^3.1.2"
},
"devDependencies": {
"@types/node": "^16.4.12",
"@types/redis": "^2.8.31",
"nodemon": "^2.0.12",
"ts-node-dev": "^1.1.8",
"typescript": "^4.3.5"
}
}
tsconfig.json
{
"compilerOptions": {
"module": "commonjs",
"esModuleInterop": true,
"target": "es6",
"moduleResolution": "node",
"sourceMap": true,
"outDir": "lib",
"declaration": true,
"noImplicitAny": true,
"declarationMap": true,
"allowJs": true
},
"lib": ["es2015"]
}
JavaScript(Node.js,我想在这里使用这个库)
简化代码...
const MyModule = require("my-module-name");
const myModule = new MyModule(); <--- this line is where the error happens
所以我得到的错误是:
const myModule = new MyModule();
^
TypeError: MyModule is not a constructor
这表明 MyModule 甚至不是 class,但它确实是。我确实获得了 TS 库中类型的智能感知,但我无法使用 class.
这里是转译后的 TS 到 JS 代码:
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const declarations_1 = require("./declarations");
class Communicator {
constructor() {
// constructor logic
};
// more methods...
}
exports.default = MyModule;
我已经尝试关注多篇文章和指南,更改 tsconfig.json,并将“type”:“module”添加到 package.json,但由于某种原因,我根本无法让它工作。
任何指点将不胜感激。
试试这个
const MyModule = require("my-module-name").default;
const myModule = new MyModule();
我一直在用一个看似简单的任务撞墙。如果对此有任何见解,我将不胜感激。
我正在用 TypeScript 编写一个私有库,用于 TypeScript 和我们公司的 JavaScript 项目。
该库运行良好,但我似乎无法将其导入 JavaScript。
TS 中的库
package.json
{
"name": "rr-comm-bus-js",
"version": "0.3.0",
"description": "",
"main": "lib/src/index.js",
"types": "lib/src/index.d.ts",
"scripts": {
"dev": "ts-node-dev --respawn src/dev/dev.ts",
"build": "rm -rf lib && tsc"
},
"keywords": [],
"dependencies": {
"redis": "^3.1.2"
},
"devDependencies": {
"@types/node": "^16.4.12",
"@types/redis": "^2.8.31",
"nodemon": "^2.0.12",
"ts-node-dev": "^1.1.8",
"typescript": "^4.3.5"
}
}
tsconfig.json
{
"compilerOptions": {
"module": "commonjs",
"esModuleInterop": true,
"target": "es6",
"moduleResolution": "node",
"sourceMap": true,
"outDir": "lib",
"declaration": true,
"noImplicitAny": true,
"declarationMap": true,
"allowJs": true
},
"lib": ["es2015"]
}
JavaScript(Node.js,我想在这里使用这个库)
简化代码...
const MyModule = require("my-module-name");
const myModule = new MyModule(); <--- this line is where the error happens
所以我得到的错误是:
const myModule = new MyModule();
^
TypeError: MyModule is not a constructor
这表明 MyModule 甚至不是 class,但它确实是。我确实获得了 TS 库中类型的智能感知,但我无法使用 class.
这里是转译后的 TS 到 JS 代码:
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const declarations_1 = require("./declarations");
class Communicator {
constructor() {
// constructor logic
};
// more methods...
}
exports.default = MyModule;
我已经尝试关注多篇文章和指南,更改 tsconfig.json,并将“type”:“module”添加到 package.json,但由于某种原因,我根本无法让它工作。
任何指点将不胜感激。
试试这个
const MyModule = require("my-module-name").default;
const myModule = new MyModule();