【发布时间】:2018-02-24 08:22:52
【问题描述】:
我在 Typescript 文件中实现了一个类,并且我能够在它实现的同一个文件中成功创建一个新对象,但是如果我尝试在单独的文件中导出/导入它们,我会遇到问题。请参阅下面的错误消息:
错误
nodemon] starting `ts-node src/TestBot.ts`
Initializing Messenger
/Users/some_user/Documents/Src/some_folder/src/TestBot.ts:14
let myBot = new Messenger(my_page_access_token, my_page_verify_token);
^
TypeError: Messenger is not a constructor
at Object.<anonymous (/Users/some_user/Documents/Src/some_folder/src/TestBot.ts:14:17)
我将不胜感激任何解决问题的指针。
这是实现 Messenger 类的主文件
// index.ts
class Messenger extends events.EventEmitter {
private readonly pageAccessToken: String;
private readonly pageVerifyToken: String;
constructor(pageAccessToken: String, pageVerifyToken: String) {
super();
if (!pageAccessToken || !pageVerifyToken) {
console.error("Missing Messenger Tokens");
throw new TypeError("Missing Messenger Tokens");
}
console.log("Initializing Messenger");
this.pageAccessToken = pageAccessToken;
this.pageVerifyToken = pageVerifyToken;
}
...
...
}
...
export = Messenger;
在同一目录中的 TestBot.ts 文件中,我正在实例化它
// TestBot.ts
import Messenger = require('./index');
let http = require('http');
let my_page_access_token = 'access_token';
let my_page_verify_token = 'verify_token';
let myBot = new Messenger(my_page_access_token, my_page_verify_token);
编辑1:
尝试了各种排列方式
我尝试过各种排列方式
// index.ts
// export = Messenger;
// module.exports = Messenger;
// export default Messenger;
// export * from './index';
// export {Messenger};
// export default Messenger;
// TestBot.ts
// import { Messenger } from './index';
// import Messenger from './index';
// import Messenger = require('./index');
// import './index.ts'
【问题讨论】:
-
你在 TS 的节点中使用 ES6 导入吗?
-
您使用哪个命令来编译 .TS 文件?有 --out 选项?
-
@Niladri --> ts-node src/TestBot.ts 和根据 tsconfig.json 的目标是“ES5” // nodemon.json { "verbose": false, "watch": [" src/*.ts"], "ext": "ts", "ignore": ["node_modules"], "exec": "ts-node src/TestBot.ts" }
-
你可以试试
import {Messenger} from './index'。有时这是由于require导致节点中的循环依赖,因为它返回{} -
不,我问的是在你的 testbot.ts 文件中导入。您使用的是哪个版本的打字稿?
标签: javascript node.js typescript typescript2.0