Bra*_*don 5 linux ubuntu node.js
我正在尝试在 Ubuntu 14.04 上运行一个简单的 nodejs 脚本,其内容如下:
http = require('http');
http.createServer(function(req, res){
res.writeHead(200, {'Content-Type': 'text/plain' });
res.end('Hello World \n');
}).listen(80, '127.0.0.1');
Run Code Online (Sandbox Code Playgroud)
我已经通过此处找到的说明安装了 NodeJs 。这是我从该链接中遵循的摘录:
选项 2:使用 Ubuntu 包管理器安装 Node.js
要安装 Node.js,请在终端中键入以下命令:
sudo apt-get install nodejs然后安装 Node 包管理器 npm:
sudo apt-get install npm为节点创建一个符号链接,因为许多 Node.js 工具使用这个名称来执行。
sudo ln -s /usr/bin/nodejs /usr/bin/node
我这样做了,验证了两个软件包都已安装:
但是我不能使用我的 .node 文件而不抱怨这个错误:
user@host:/var/www/html/nodetest$ node test.node
module.js:356
Module._extensions[extension](this, filename);
^
Error: /var/www/html/nodetest/test.node: invalid ELF header
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:945:3
Run Code Online (Sandbox Code Playgroud)
我已经卸载并重新安装了 node 以及 npm,但它仍然不起作用......我正在运行 Ubuntu 14.04 LTS 64 位。
更多信息:
我决定从源代码构建,然后master从https://github.com/nodejs/node.git克隆并构建它然后运行相同的脚本,这是我得到的错误:
user@host:/var/www/html/nodetest$ ~/node/node test.node
module.js:600
return process.dlopen(module, path._makeLong(filename));
^
Error: /var/www/html/nodetest/test.node: invalid ELF header
at Object.Module._extensions..node (module.js:600:18)
at Module.load (module.js:490:32)
at tryModuleLoad (module.js:449:12)
at Function.Module._load (module.js:441:3)
at Module.runMain (module.js:607:10)
at run (bootstrap_node.js:414:7)
at startup (bootstrap_node.js:139:9)
at bootstrap_node.js:529:3
Run Code Online (Sandbox Code Playgroud)
显然,这是相同的错误,但堆栈跟踪不同。
是什么赋予了?
好吧,这很尴尬(实际上,有点令人气愤)。
无效的 ELF 标头
只是 NodeJS 告诉我文件扩展名不正确的一种奇特方式。
我跑了
mv test.node test.js
重命名文件,现在它可以工作了。由于错误消息,那真是令人讨厌的两天浪费。
robertklep 在评论中的进一步解释:
文件 extension.node 对 Node 有特殊意义,因为它应该用于本地(编译)插件。“ELF header”部分指的是动态加载器(
process.dlopen()在错误的堆栈跟踪中)如何识别文件是编译的插件。由于您提供的是JS文件,因此识别失败,因此“无效的ELF标头”。这并没有说明 JS 文件,它在您重命名后运行良好。
| 归档时间: |
|
| 查看次数: |
7907 次 |
| 最近记录: |