我正在使用beaker notebook,并希望使用一些外部节点模块-但由于beaker不会将系统路径更改为当前活动文件的目录,因此我尝试包含stream-filter时会遇到以下错误:
Error: Cannot find module 'stream-filter'
Error: Cannot find module 'stream-filter'
at Function.Module._resolveFilename (module.js:336:15)
at Function.Module._load (module.js:286:25)
at Module.require (module.js:365:17)
at require (module.js:384:17)
at eval (eval at processCode (/opt/homebrew-cask/Caskroom/beaker/1.4.2-1-ge55c059/Beaker.app/Contents/Resources/dist/config/plugins/eval/node/app/app.js:45:23), :5:14)
at processCode (/opt/homebrew-cask/Caskroom/beaker/1.4.2-1-ge55c059/Beaker.app/Contents/Resources/dist/config/plugins/eval/node/app/app.js:45:18)
at /opt/homebrew-cask/Caskroom/beaker/1.4.2-1-ge55c059/Beaker.app/Contents/Resources/dist/config/plugins/eval/node/app/app.js:32:28
at callbacks (/opt/homebrew-cask/Caskroom/beaker/1.4.2-1-ge55c059/Beaker.app/Contents/Resources/dist/config/plugins/eval/node/app/node_modules/express/lib/router/index.js:164:37)
at param (/opt/homebrew-cask/Caskroom/beaker/1.4.2-1-ge55c059/Beaker.app/Contents/Resources/dist/config/plugins/eval/node/app/node_modules/express/lib/router/index.js:138:11)
at pass (/opt/homebrew-cask/Caskroom/beaker/1.4.2-1-ge55c059/Beaker.app/Contents/Resources/dist/config/plugins/eval/node/app/node_modules/express/lib/router/index.js:145:5)我想知道如何解决这个问题。我尝试了process.chdir('/Users/akivalipshitz/Developer/Computational_Linguistics'),但没有用,即使流过滤器安装在node_modules中的相同目录中。
那么人们如何使用节点模块呢?
发布于 2016-02-08 07:55:52
对节点代码求值的上下文在您的示例中
/opt/homebrew-cask/Caskroom//beaker/1.4.2-1-ge55c059/Beaker.app/Contents/Resources/dist/config/plugins/eval/node/app/app.js因此,require()在node_modules文件夹中查找模块,然后沿着父文件夹(see docs)递归向上查找。
一种解决方案(如果您只在一个项目中工作或在所有项目中频繁使用此模块)将会在那里安装您的模块:
cd /opt/homebrew-cask/Caskroom//beaker/1.4.2-1-ge55c059/Beaker.app/Contents/Resources/dist/config/plugins/eval/node/app/
npm install stream-filter另一种(丑陋的)方法可能是在您的require()中构建一个长的相对路径。在您的示例中,类似于:
require('../../../../../../../../../../../../Users/akivalipshitz/Developer/Computational_Linguistics');这两种情况都意味着你的代码不能移植到另一个烧杯实例上。然而,至少在提出更好的解决方案之前,这可以让你继续进行原型开发。
发布于 2016-11-19 01:35:56
在撰写本文时,当前版本的Beaker允许您直接从GUI导入npm modules。只需单击notebook -> Language Manager -> Javascript,然后在Loaded Libraries中键入模块名称。烧杯从npm registry自动完成。
这在electron客户端和云托管版本中都有效。

https://stackoverflow.com/questions/34769103
复制相似问题