如何访问流星包内的变量(函数)?

时间:2017-01-23 16:12:12

标签: javascript node.js meteor

我的Meteor应用程序中安装了一个meteor软件包

/packages/mypackage/some_code.js

inside是一个函数:

function myFunction(){
    ...
}

我想从我的metoer应用程序中的另一个文件中调用此函数。这两个代码都在服务器端运行。

/imports/api/myapi.js

如何从myapi.js访问myFunction?

更新:

经过大量尝试和错误后,我的导出如下:

var exports = module.exports = {};

exports.getResponses = function (){
    return responses;
}

并导入:

import { getResponses } from 'meteor/user:mypackage/myfile.js' ;

1 个答案:

答案 0 :(得分:2)

Meteor Guide on Exporting涵盖了此主题。在该指南中:

  

虽然存在一些仅为了向应用程序提供副作用的软件包,但大多数软件包都提供了可重复使用的代码,消费者可以使用这些代码进行导入。要从包中导出符号,只需在mainModule中使用ES2015导出语法:

// in my-package.js:
export const myName = 'my-package';
  

现在,您的软件包的用户可以使用以下符号导入符号:

import { myName } from 'meteor/username:my-package';

这也适用于在/package目录中找到的内部包。只需确保您拥有ecmascript核心包,并确保正确导出/导入对象。您还需要在.meteor/packagesmeteor add <package>或通过手动输入来添加软件包的名称。

编辑 - 对导入/导出语法的一些阐述 - 希望这有助于您调试undefined问题!

来自MDN's guide on import/export

有两种类型的导出,名为默认

命名出口:

export { myFunction }; // exports a function declared earlier
export const foo = Math.sqrt(2); // exports a constant

默认导出:(每个脚本只有一个)

export default function() {} // or 'export default class {}'
// there is no semi-colon here

命名导出允许为每个脚本导出多个值,而导出默认值则允许每个脚本使用一个或后备。

例如,要从多个命名导出导入,您可以编写:

import { myFunction, foo } from 'some-module.js';

导入默认值的方式如下:

import defs from 'definitions.js';