2014-10-03 41 views
0

我有一个以流星0.6.0开始的应用程序,并且已经逐步更新到当前的0.9.3.1版本。流星0.9没有找到包所指定的npm依赖关系

应用程序使用所谓的“应用程序”的本地软件包这是./pacakges/app,它有一个package.js文件看起来像这样:

./packages/app/package.js

Package.describe({ 

    summary: "App SDK", 

    version: "1.0.0" 

}); 


Package.onUse(function (api) { 

    api.versionsFrom('0.9.3.1'); 




    api.addFiles([ 

     "app.js" 

    ], "server"); 


    api.export([ 
     'amqp', 
     'eyes', 
     'fiber', 
     'eyes', 
     'pretty', 
     'sax', 
     'xml_writer' 
    ], "server"); 

}); 

Npm.depends({ 
    "eyes": "0.1.8", 
    "amqp": "0.1.6", 
    "fibers": "1.0.0", 
    "pretty-data": "0.40.0", 
    "sax": "0.5.4", 
    "xml-writer": "1.2.4" 
}); 

这用来工作,但我最近签了一份工作副本在新机器上,我得到以下错误,当我开始流星:

app: updating npm dependencies -- eyes, amqp, fibers, pretty-data, sax, xml-writer... 
W20141003-09:50:13.172(-7)? (STDERR) 
W20141003-09:50:13.239(-7)? (STDERR) /root/.meteor/packages/meteor-tool/.1.0.33.vvwxrr++os.linux.x86_64+web.browser+web.cordova/meteor-tool-os.linux.x86_64/dev_bundle/lib/node_modules/fibers/future.js:173 
W20141003-09:50:13.239(-7)? (STDERR)      throw(ex); 
W20141003-09:50:13.239(-7)? (STDERR)       ^
W20141003-09:50:13.240(-7)? (STDERR) Error: Cannot find module 'eyes' 
W20141003-09:50:13.240(-7)? (STDERR)  at Function.Module._resolveFilename (module.js:338:15) 
W20141003-09:50:13.240(-7)? (STDERR)  at Function.Module._load (module.js:280:25) 
W20141003-09:50:13.240(-7)? (STDERR)  at Module.require (module.js:364:17) 
W20141003-09:50:13.241(-7)? (STDERR)  at require (module.js:380:17) 
W20141003-09:50:13.241(-7)? (STDERR)  at Object.Npm.require (/mnt/disk2/applications/myapp/source/.meteor/local/build/programs/server/boot.js:95:18) 
W20141003-09:50:13.241(-7)? (STDERR)  at app/server/main.data_sync.js:10:24 
W20141003-09:50:13.241(-7)? (STDERR)  at /mnt/disk2/applications/myapp/source/.meteor/local/build/programs/server/boot.js:175:5 

由于在那里提到了科尔多瓦,我认为这与流星最近引入该平台有关。我没有在我的应用中定位移动平台,所以我可以删除它,如果这有帮助。

问题是,我错过了什么来获得这些npm依赖关系吗?

+0

也许在你的包的根目录下试试'rm -rf .npm'来清除npm相关的缓存。 – saimeunt 2014-10-03 17:04:48

+0

确保deep是在package.json中指定的,然后运行'npm install' – Joseph 2014-10-03 17:17:57

+0

@ joseph是不是Npm.depends应该自动安装它们? – SuitedSloth 2014-10-03 17:20:27

回答

0

在这种情况下的答案是在包外部有对Npm.require()的调用。我曾经假设由程序包设置的npm依赖关系会被提供给应用程序本身,但事实并非如此。

在我的情况下,我刚刚通过api.export()导出了一些我需要的NPM包,并从应用中删除了任何Npm.require()调用(除了允许的Npm.require('fibers')外)。

还有this package它允许Npm.require()没有包。