Javascript 如何访问meteor包中的变量(函数)?
我的meteor应用程序中安装了meteor软件包Javascript 如何访问meteor包中的变量(函数)?,javascript,node.js,meteor,Javascript,Node.js,Meteor,我的meteor应用程序中安装了meteor软件包 /packages/mypackage/some_code.js 里面有一个函数: function myFunction(){ ... } 我想从我的Metore应用程序中的另一个文件调用此函数。这两个代码都在服务器端运行 /imports/api/myapi.js 如何从myapi.js访问myFunction 更新: 经过多次尝试和错误后,我的导出如下所示: var exports = module.exports = {}
/packages/mypackage/some_code.js
里面有一个函数:
function myFunction(){
...
}
我想从我的Metore应用程序中的另一个文件调用此函数。这两个代码都在服务器端运行
/imports/api/myapi.js
如何从myapi.js访问myFunction
更新:
经过多次尝试和错误后,我的导出如下所示:
var exports = module.exports = {};
exports.getResponses = function (){
return responses;
}
和进口:
import { getResponses } from 'meteor/user:mypackage/myfile.js' ;
本主题包含在本手册中。在该指南中: 虽然有些软件包的存在只是为了给应用程序提供副作用,但大多数软件包都提供了可重用的代码,消费者可以通过导入使用这些代码。要从软件包中导出符号,只需在mainModule中使用ES2015导出语法: 现在,软件包的用户可以通过以下方式导入符号: 这也适用于
/package
目录中的内部包。只需确保您拥有ecmascript
core包,并且正确导出/导入对象即可。您还需要通过meteor add
或手动输入,在.meteor/packages
中添加包名
编辑-关于导入/导出语法的一些详细说明-希望这能帮助您调试未定义的
问题
发件人:
有两种类型的导出,命名导出和默认导出
命名导出:
export { myFunction }; // exports a function declared earlier
export const foo = Math.sqrt(2); // exports a constant
默认导出:(每个脚本仅一个)
命名导出允许为每个脚本导出多个值,而导出默认值允许为每个脚本导出一个值或回退
例如,要从多个命名导出导入,您可以编写:
import { myFunction, foo } from 'some-module.js';
而导入默认值的方式如下所示:
import defs from 'definitions.js';
听起来这是为了创建包,然后我可以通过
meteor add package
添加包,而且我在export语句中得到了'SyntaxError:Unexpected reserved word'(在meteor上,我安装了ecmascript packagae)。对于/package
目录下本地存储的包,它的工作方式相同。Meteor将首先使用.Meteor/packages
文件中列出的包查看那里。我将更新我的答案。另外-您的包是否依赖于ecmascript?你能在问题中发布你的更新代码吗?实际上是这个包,我正在编辑的文件是saml_server.js,因为我需要idp的响应。但是,是的,我不是通过meteor add将其包括在内的。我在包目录中本地拥有它。因此,直到现在,我才在saml_服务器的第5行中添加了“export const myName=”my package“。js?你能用你的导入/导出代码更新你的问题吗?用你的新更新:你是否在定义函数后的任何地方调用export getResponses
?现在,您的函数仍然只是定义在其中的文件的本地函数。看起来您已经能够理解它了!你遗漏了什么?是的,包中的.js文件也必须被添加(见问题)。只导入包是不够的。太棒了!很高兴你明白了。
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';