我的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' ;
答案 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/packages
到meteor 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';