节点传输包不工作

时间:2017-01-14 14:39:28

标签: javascript node.js transmission

我尝试在我的本地nodejs安装中安装此软件包:https://github.com/FLYBYME/node-transmission但是从上面的github存储库运行example.js时出现以下错误。

    Error: connect ECONNREFUSED 127.0.0.1:9091
    at Object.exports._errnoException (util.js:1022:11)
    at exports._exceptionWithHostPort (util.js:1045:20)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1090:14)
  code: 'ECONNREFUSED',
  errno: 'ECONNREFUSED',
  syscall: 'connect',
  address: '127.0.0.1',
  port: 9091

经过一番研究后,我尝试使用此代码在端口9091上运行服务器(在单独的server.js文件中)

const http = require('http')  
const port = 9091

const requestHandler = (request, response) => {  
  console.log(request.url)
  response.end('Hello Node.js Server!')
}

const server = http.createServer(requestHandler)

server.listen(port, (err) => {  
  if (err) {
    return console.log('something bad happened', err)
  }

  console.log(`server is listening on ${port}`)
})

在端口9091上运行服务器后,我开始使用example.js收到此错误:

SyntaxError: Unexpected token H in JSON at position 0
at JSON.parse (<anonymous>)
at IncomingMessage.onEnd (F:NodeJS\node-transmission-master\lib\transmission.js:453:33)
at emitNone (events.js:91:20)
at IncomingMessage.emit (events.js:185:7)
at endReadableNT (_stream_readable.js:974:12)
at _combinedTickCallback (internal/process/next_tick.js:74:11)
at process._tickCallback (internal/process/next_tick.js:98:9)

导致这种情况的原因是什么?我不知道我做错了哪一步。这就是我描述我遵循的整个过程的原因。

我对nodejs很新。任何帮助都将深表感谢。

2 个答案:

答案 0 :(得分:1)

该库期待JSON格式化的响应,并且您正在发送简单的文本响应。如果你查看他们的源代码,你可以看到他们的callServer函数需要一个字符串化的JSON,但我在他们的文档中看不到。

您可以像这样更改代码:

const http = require('http')  
const port = 9091

const requestHandler = (request, response) => {  
  console.log(request.url)

  // Format your response as a stringified JSON
  response.end(JSON.stringify({message: 'Hello Node.js Server!'}));
}

const server = http.createServer(requestHandler)

server.listen(port, (err) => {  
  if (err) {
    return console.log('something bad happened', err)
  }

  console.log(`server is listening on ${port}`)
})

答案 1 :(得分:1)

要从node-transmission包运行示例,首先需要安装并启动transmission-daemon。 以下步骤适用于Ubuntu:

  1. 以root用户身份登录或使用su -更改为root用户(请务必小心以root身份执行/安装)
  2. 安装transmission-daemon linux软件包:apt-get install transmission-daemon
  3. 编辑守护程序配置以禁用身份验证或设置用户名/密码(没有默认密码)。您可以通过编辑配置文件中的相对标志来禁用身份验证:

    • pico /etc/transmission-daemon/settings.json
    • 将auth标志设置为false:rpc-authentication-required:false
    • Ctrl-X然后按Y,然后按Enter保存更改
  4. 启动守护程序:start transmission-daemon

  5. 您现在应该能够成功执行example.js并下载其torrent链接。