因此,我已经在我的树莓派上安装了node.js。通过运行以下命令检查它是否已安装:
node -v
产生:4.2.1和
npm -v
,得到2.14.7。但是,当我尝试运行任何.js文件(我已经测试过在我的PC上的节点中运行)时,它失败,并显示以下内容:
pi@raspberrypi:~/share/Node $ node Brew-View.js
events.js:141
throw er; // Unhandled 'error' event
^
Error: listen EACCES 0.0.0.0:80
at Object.exports._errnoException (util.js:874:11)
at exports._exceptionWithHostPort (util.js:897:20)
at Server._listen2 (net.js:1221:19)
at listen (net.js:1270:10)
at Server.listen (net.js:1366:5)
at EventEmitter.listen (/home/pi/share/Node/node_modules/express/lib/application.js:618:24)
at Object.<anonymous> (/home/pi/share/Node/Brew-View.js:39:8)
at Module._compile (module.js:435:26)
at Object.Module._extensions..js (module.js:442:10)
at Module.load (module.js:356:32)
我什至回到了基础知识,只是运行了一个刚刚拥有的文件
console.log('Hello.');
,结果相同。这听起来像是由于预装的模块不良导致的问题。但这是一个全新的安装(node和raspbian都安装)。您是否需要针对pi上的节点专门执行一些设置步骤或以其他方式调用它? 注意:这是在pi 3 B +上
编辑:这是我正在运行的代码,产生141错误(我已添加ip并通过npm将该目录表示为该目录):
const express= require('express')
const ip = require('ip')
const ipAddr=ip.address();
const port=80;
const Server= express();
Server.use(express.static('public'))
Server.get('/',function(req,res){
res.send('<html>'+
'<head>'+
'<meta charset ="UTF-8">'+
'<link rel="stylesheet" type="text/css" href="./main.css"></head><body>'+
'<h1>Brew View</h1>'+
'<p>my IP is: '+ipAddr+":"+port+'</p>'+
'</body>'+
'</html>')
})
// Handle 404
Server.use(function(req, res) {
res.status(404).send('<html>'+
'<head>'+
'<meta charset ="UTF-8">'+
'<link rel="stylesheet" type="text/css" href="./main.css"></head><body>'+
'<h1>404: Page not Found</h1>'+
'</body>'+
'</html>');
});
// Handle 500
Server.use(function(error, req, res, next) {
res.send('500: Internal Server Error', 500);
});
Server.use(express.static('public'))
Server.listen(80,()=> console.log("Hello. Brew View is Hosted at: "+ipAddr+":"+port))
这也发生在基于HTTP模块的更基本的服务器上。
编辑:因此解决方案是没有root用户就不能自动在端口80上托管。