【问题标题】:Working on mac but not on machine - linux ubuntu - node server在 mac 上工作但不在机器上工作 - linux ubuntu - 节点服务器
【发布时间】:2017-11-02 06:27:19
【问题描述】:

我的 http 服务器有问题,这里是代码:

var http = require('http');
var url = require('url');
var fs = require('fs');

http.createServer(function (req, res) {
  var q = url.parse(req.url, true);
  var filename = "." + q.pathname;


const request = require('request');


var dpi = "half api code type 1"; 
var ipn = "half api code type 2"; 
var close = "2nd half api code ";



var ipnTable = ['table with links'];


var dpiTable = ['table with links',];





request(dpi+dpiTable[0]+close { json: true }, (err, res, body) => {
  if (err) { return console.log(err); }
  console.log(body.url);
  console.log(body.explanation);
});



  fs.readFile(filename, function(err, data) {
    if (err) {
      res.writeHead(404, {'Content-Type': 'text/html'});
      return res.end("404 Not Found");
    } 
    res.writeHead(200, {'Content-Type': 'text/html'});
    res.write(data);
    return res.end();
  });
}).listen(8080, 'ip / hostname of my machine - idk what to chose');

它在 mac 上运行,但我在机器上收到一些错误,看看这个:

0|serwer2  |     at Server.<anonymous> (/home/ubuntu/smcheck/serwer2.js:10:17)
0|serwer2  |     at emitTwo (events.js:106:13)
0|serwer2  |     at Server.emit (events.js:191:7)
0|serwer2  |     at HTTPParser.parserOnIncoming [as onIncoming] (_http_server.js:546:12)
0|serwer2  |     at HTTPParser.parserOnHeadersComplete (_http_common.js:99:23)
0|serwer2  | Error: Cannot find module 'request'
0|serwer2  |     at Function.Module._resolveFilename (module.js:469:15)
0|serwer2  |     at Function.Module._load (module.js:417:25)
0|serwer2  |     at Module.require (module.js:497:17)
0|serwer2  |     at require (internal/module.js:20:19)
0|serwer2  |     at Server.<anonymous> (/home/ubuntu/smcheck/serwer2.js:10:17)
0|serwer2  |     at emitTwo (events.js:106:13)
0|serwer2  |     at Server.emit (events.js:191:7)
0|serwer2  |     at HTTPParser.parserOnIncoming [as onIncoming] (_http_server.js:546:12)

请帮帮我,我不知道该怎么办......

我正在尝试向一个网站的 api 发送请求,在 mac 上我收到未定义的响应 - 可能是因为 api 服务器使用 revdns 进行身份验证。

问题是,为什么我总是遇到同样的问题,如果您知道如何将 api 服务器的响应放入某个 div 中,那就太好了。

感谢所有感兴趣的人喝啤酒。

【问题讨论】:

  • 你跑npm install了吗?
  • 是的,我用过这个
  • request 不是内置模块。你必须先安装它。
  • 好吧,我用了 npm install request -g 问题还是一样...可能是 npm 做的不好还是什么?
  • 好的,可能是机器有问题,我去看看再回答,

标签: javascript node.js linux macos


【解决方案1】:

默认情况下,您不能要求全局安装的 npm 模块

npm install request --save代替npm install request -g

它在您的 Mac 上运行可能是因为有一个 NODE_PATH 环境变量指向全局 node_modules 目录。在 Linux 中,您可以通过以下方式执行此操作:export NODE_PATH=/usr/lib/node_modules(您的机器上的路径可能不同)

【讨论】:

  • npm install request --save 解决了问题。非常感谢!!
猜你喜欢
  • 2011-05-30
  • 1970-01-01
  • 2017-10-23
  • 2022-01-24
  • 2021-01-23
  • 2015-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多