试图找出将npm包加载到Meteor中的方法。具体来说,我尝试了future-npm
我试图这样做:
Package.describe({
summary: "Blah blah",
version: '0.0.1'
});
Npm.depends({future: "2.3.1"});
Package.onUse(function (api) {
api.addFiles('lubert.js', 'server');
api.export('Lubert');
});
不幸的是我收到了以下控制台错误
Uncaught ReferenceError: Npm is not defined
我已阅读documentation,并且没有任何内容可以加载任何依赖
我做错了什么?
更新2:我的package.js看起来像
Package.describe({
name: 'trepafi:package',
summary: '',
version: '0.0.3',
git: 'https://github.com/trepafi/meteor-package.git'
});
Npm.depends({
"future": "2.3.1"
});
Package.onUse(function(api) {
api.versionsFrom('1.0');
api.use(['tracker', 'underscore'], ['client']);
api.addFiles(['package.js'], ['client']);
api.export('Package', ['client']);
});
更新1:我的package.json看起来像
{
"name": "trepafi-package",
"version": "0.0.3",
"description": "Package for Meteor",
"repository": {
"type": "git",
"url": "https://github.com/trepafi/meteor-package.git"
},
"author": "Lubert Palacios",
"license": "MIT",
"homepage": "https://github.com/trepafi/meteor-package",
"dependencies": {
"future": "^2.3.1"
}
}
我也尝试过meteorhacks:npm没有成功。 如果我可以使用" native"那就太好了。方式
答案 0 :(得分:5)
您应该在Npm.require
文件的末尾对所有package.js
进行分组。
future-npm
。你不需要Npm.depends
中的package.js
,傻。它已经包含在流星中..只是Npm.require
某个地方,你很高兴。要做到这一点:
不要对package.js
名称含糊不清。请改用trepafi:package.js
。
您不需要package.json
.. Npm.depends
让您受到保护。
删除这个:api.addFiles(['package.js'], ['client']);
,因为它看起来像一个循环的依赖.. 哟dawg我在你的包里找到了你的谎言package.js ..不酷,Xzibit
由于Npm.require仅适用于服务器端,因此您需要将trepafi:package.js
包含在服务器端。 e.g:
api.addFiles(['trepafi:package.js'], ['server']);
所以你的结构至少:
trepafi:package/
- package.js
- trepafi:package.js
- <other files..>
你不需要Future
的package.json ..它已经包含在Meteor中。
您的package.js
应如下:
Package.describe({
name: 'trepafi:package',
summary: '',
version: '0.0.3',
git: 'https://github.com/trepafi/meteor-package.git'
});
Package.onUse(function(api) {
api.versionsFrom('METEOR@1.0');
api.use(['tracker', 'underscore','meteor'], ['client']);
api.addFiles(['trepafi:package.js'], ['server']);
api.export('Package', ['client']);
});
//if you really need Npm.depends:
Npm.depends({
'prerender-node': '1.0.6',
'send' : '0.10.1'
});
// we don't need no package.json
您的trepafi:package.js
应如下:
var Future = Npm.require('future');
var future = new Future();
// use your future to make Doc Brown proud.
var useFuture = function(asyncFunc) { //expects function with callback somewhere
asyncFunc(function(err, result) {
if(err) future.throw("OMG something went wrong!");
else return future.return(result);
});
return future.wait();
};
Meteor.startup(function() {
//something
});
package.js
中的显着变化versionsFrom
和api.use
现已添加meteor
。