我有一些关于node-gd和Meteor的相关问题。
前几个问题。我试图在我认为正确的地方安装node-gd。
这看起来是否已将其安装到与Meteor一起使用的正确位置?
我应该担心输出中的警告吗?
me@ubuntu:/usr/local/lib$ sudo npm install node-gd
npm http GET https://registry.npmjs.org/node-gd
npm http 304 https://registry.npmjs.org/node-gd
> node-gd@0.2.3 install /usr/local/lib/node_modules/node-gd
> node-gyp rebuild
make: Entering directory `/usr/local/lib/node_modules/node-gd/build'
CXX(target) Release/obj.target/node_gd/cpp/node-gd.o
../cpp/node-gd.cpp: In static member function ‘static v8::Handle<v8::Value> Gd::Image::StringFTBBox(const v8::Arguments&)’:
../cpp/node-gd.cpp:1045:22: warning: variable ‘color’ set but not used [-Wunused-but-set-variable]
REQ_INT_ARG(0, color);
^
../cpp/node-gd.cpp:41:7: note: in definition of macro ‘REQ_INT_ARG’
int VAR; \
^
SOLINK_MODULE(target) Release/obj.target/node_gd.node
SOLINK_MODULE(target) Release/obj.target/node_gd.node: Finished
COPY Release/node_gd.node
make: Leaving directory `/usr/local/lib/node_modules/node-gd/build'
node-gd@0.2.3 node_modules/node-gd
me@ubuntu:/usr/local/lib$ ls
node_modules python2.7 python3.4
me@ubuntu:/usr/local/lib$ cd node_modules/
me@ubuntu:/usr/local/lib/node_modules$ ls
meteorite node-gd
我将坐标传回服务器,我想使用node-gd来操作服务器上的图像。
这是我的Meteor方法:
Meteor.methods({
createImage: function(coords) {
console.log('createImage')
console.log(coords.x);
var gd = require('gd');
}
});
当我尝试运行此功能时,我在终端上得到了这个:
I20140826-06:44:18.166(-7)? Exception while invoking method 'createImage' ReferenceError: require is not defined
I20140826-06:44:18.166(-7)? at Meteor.methods.createImage (app/server/server.js:7:15)
I20140826-06:44:18.167(-7)? at maybeAuditArgumentChecks (packages/livedata/livedata_server.js:1487)
I20140826-06:44:18.167(-7)? at packages/livedata/livedata_server.js:643
I20140826-06:44:18.168(-7)? at _.extend.withValue (packages/meteor/dynamics_nodejs.js:56)
I20140826-06:44:18.168(-7)? at packages/livedata/livedata_server.js:642
I20140826-06:44:18.168(-7)? at _.extend.withValue (packages/meteor/dynamics_nodejs.js:56)
I20140826-06:44:18.168(-7)? at _.extend.protocol_handlers.method (packages/livedata/livedata_server.js:641)
I20140826-06:44:18.168(-7)? at packages/livedata/livedata_server.js:541
this question的答案提出了各种JS解决方案。这是我需要的,任何人都可以为服务器和客户推荐最好的Meteor用途吗?
答案 0 :(得分:2)
你不能以这种方式将NPM模块添加到流星,你应该使用meteorhacks的npm氛围包:http://atmospherejs.com/package/npm
您需要做的是通过陨石安装包:
mrt add npm
然后在项目根目录中添加packages.json并指定node-gd
依赖项:
{
"node-gd":"0.2.3"
}
最后,在您的服务器代码中使用Meteor.require访问node-gd
API。
请注意,Meteor服务器端编程使用Fibers
,因此您必须使用node-gd
或Meteor._wrapAsync
的集合将异步API调用包装到Async utilities
与npm氛围包一起出现。
以下是关于理解这一点的好文章:https://www.discovermeteor.com/blog/understanding-sync-async-javascript-node/
您无法在客户端上使用NPM包。
答案 1 :(得分:0)
尝试使用Meteor.npmRequire(&#39;您的模块名称&#39;)