我在Linux Mint 16'perara'64位上运行,我试图第一次使用'phantomjs'和节点js。
我在全球范围内安装了phantomjs:
sudo npm install -g phantomjs
...并确认它正在运行(我通过在终端中运行“phantomjs”来获得phantomjs提示)
我在节点项目中安装了节点'phantom'模块:
npm install phantom
到目前为止一切顺利。
但是,在我的应用程序代码中,只要它尝试执行此行:
var phantom = require('phantom');
...程序崩溃时出现以下痕迹:
Listening on port 3000 about to instantiate phantom module... module.js:333 throw err; ^ Error: Cannot find module 'weak' at Function.Module._resolveFilename (module.js:331:15) at Function.Module._load (module.js:273:25) at Module.require (module.js:357:17) at require (module.js:373:17) at new D (/home/joe/Documents/My Stuff/Programming/Angular.js Projects/NodeJS Messing/FreeAgentScraper/node_modules/phantom/node_modules/dnode/index.js:28:20) at module.exports (/home/joe/Documents/My Stuff/Programming/Angular.js Projects/NodeJS Messing/FreeAgentScraper/node_modules/phantom/node_modules/dnode/index.js:8:12) at /home/joe/Documents/My Stuff/Programming/Angular.js Projects/NodeJS Messing/FreeAgentScraper/node_modules/phantom/phantom.js:135:13 at Server.handler (/home/joe/Documents/My Stuff/Programming/Angular.js Projects/NodeJS Messing/FreeAgentScraper/node_modules/phantom/node_modules/shoe/index.js:22:9) at Server.EventEmitter.emit (events.js:104:17) at App.emit (/home/joe/Documents/My Stuff/Programming/Angular.js Projects/NodeJS Messing/FreeAgentScraper/node_modules/phantom/node_modules/shoe/node_modules/sockjs/lib/sockjs.js:182:27) at Session.emit_open (/home/joe/Documents/My Stuff/Programming/Angular.js Projects/NodeJS Messing/FreeAgentScraper/node_modules/phantom/node_modules/shoe/node_modules/sockjs/lib/transport.js:107:23)
我可以确认项目中的任何地方确实没有'weak.js'。
我已经运行'npm install'以确保已安装所有依赖项。
谷歌搜索没有透露任何值得的东西。有人可以提供任何建议吗?
答案 0 :(得分:19)
我在windows机器上使用node.js和幻像有同样的问题,我发现你需要在windows环境中进行一些特殊处理。 npm文档是here。
var phantom = require('phantom');
phantom.create(function(ph) {
return ph.createPage(function(page) {
return page.open("http://www.google.com", function(status) {
console.log("opened google? ", status);
return page.evaluate((function() {
return document.title;
}), function(result) {
console.log('Page title is ' + result);
return ph.exit();
});
});
});
}, {
dnodeOpts: {weak: false}
});
注意phantom.create(函数,选项,回调),这里的选项使用dnodeOpts:{weak:false}
答案 1 :(得分:3)
您是否在系统中安装了build-essential
?因为weak是需要在本地编译的模块。一周前我通过安装build-essential(sudo apt-get install build-essential
)让它在Ubuntu系统中工作,但现在当我尝试使用Linux Mint时,它会给你带来同样的错误。在npm install -g phantom
期间,它会警告无法安装weak 0.3.1
。
您找到了解决方案吗?
修改强>
顺便说一下,我成功的系统与当前系统之间的关键区别在于,第一个是32位,后者失败的是64位。模块“弱”是否有任何阻止它安装在64位盒子上的问题?
工作解决方案
我按照以下步骤解决了这个问题:
sudo add-apt-repository ppa:fkrull/deadsnakes
sudo apt-get update
sudo apt-get install python2.6
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.6 20
python --version
应该给你2.6.x.当Python版本高于2.6.x时,不会安装弱模块。在此之后确保您的节点和npm是最新版本。我有节点v0.10.28和npm v1.4.9。
如果您已安装幻像模块,请运行npm uninstall phantom
将其删除。然后运行npm cache clean
。
现在,单独安装弱版:npm install weak
。如果这样,请运行npm install phantom
安装幻像。
这应解决问题。
答案 2 :(得分:0)
I had the same issue and this code fixed my issue. Phantom version = 1.9.8 Phantom npm module version = 0.8.4
`
var phantom=require('phantom');
phantom.create(function( ph ){
},{
dnodeOpts: {
weak: false
},
parameters:{
'web-security': 'no'
}
});
`