Meteor应用程序目录布局:
imports/
api/
collections/
MyCollectionFile.js
packages/
mypackage/
mypackageMain.js
我可以从包文件中导出任何内容并在应用程序中使用它,这没关系。但是我怎么能在包中使用“import”,就像反过来一样?
// mypackageMain.js
if (Meteor.isServer) {
require ('/imports/api/collections/MyCollectionFile.js');
};
或
import '/imports/api/collections/MyCollectionFile.js';
我尝试使用路径'../../ imports / api / collections / MyCollectionFile.js',但它根本不起作用。我无法从包中访问此文件。
对于import和require,我收到以下错误:
W20160618-23:25:59.486(3)? (STDERR) Error: Cannot find module '../../imports/api/collections/MyCollectionFile.js'
W20160618-23:25:59.487(3)? (STDERR) at require (packages/modules-runtime/.npm/package/node_modules/install/install.js:85:1)
答案 0 :(得分:2)
想出这是不可能的。
但是,将集合移动到包并导出它们会使集合可用于其他包和应用程序。
答案 1 :(得分:1)
我也一直在讨论这个问题并找到了两个解决方案,但两者都不相上下。
$npm install --save ./imports/<the thing>
。npm link
创建指向要导入的内容的链接。两种解决方案都要求您在要导入的目录中有package.json
,并且两者都不会转换代码,只是针对提供的节点版本运行它。
对于transile问题,一个可能的解决方案是使用一个加载器插件,或以某种方式为System.js提供一个额外的配置,告诉它在导入时转换代码。