如何导出类的命名实例?

时间:2019-05-02 10:44:19

标签: javascript node.js

在我的节点项目中,我有以下代码。

-rwxr-xr-x 1 root root 13 May  2 10:14 sayhi.sh

这给了我意外的令牌错误。但是,如果我将其设置如下,就可以了。

import jwt from 'jsonwebtoken';
import config from 'config';

class UserService {
   generateAuthToken(user) {
      const token = jwt.sign({ _id: user._id, isAdmin: user.isAdmin }, config.get('jwtPrivateKey'));
      return token;
   }
}

export new UserService();

这是什么原因?

1 个答案:

答案 0 :(得分:2)

export new UserService();会引发错误,因为使用命名的导出时,export需要一个标识符,而new UserService()不能解析为有效的标识符。

尝试一下:

export const userService = new UserService();

/** imported like this: */
import { userService } from '../../the-path'

因此,import命名导出时标识符的名称必须相同。
如果您更改导出标识符名称,则还必须在导入中更改该名称:

export const service = new UserService(); // <- just service

/** imported like this: */
import { service } from '../../the-path' // <- userService would be undefined. you have to import service

与命名导出不同,默认名称在导入时对名称没有限制。

例如:

export default new UserService();

/** while importing, */
import userService from '../../the-path'; // <- works!
import serviceOfUser from '../../the-path'; // <- Works!

详细了解export here