【问题标题】:Node.js version changed, script no longer workingNode.js 版本已更改,脚本不再工作
【发布时间】:2014-12-22 21:15:46
【问题描述】:

我相信我已经从 v0.10.31 升级到 v.0.10.34,从那时起,我的 node.js 应用就出现了问题。

/** Variables */
var app = require('http').createServer(handler),
    io = require('socket.io').listen(app),
    url = require('url');

/** Listen on port # */
app.listen( 60003 );

/**
 * Parse server messages
 * Redirect to home page if accessed directly
 */
function handler( request, response ) {
    var requestURL = url.parse(request.url, true);

    /** ... */

    response.writeHead(302, {
        'Location': 'http://www.google.com'
    });
    response.end();
}

猫./nohup.out

./node.js:第 2 行:意外标记附近的语法错误 (' ./node.js: line 2:var app = require('http').createServer(handler),'

【问题讨论】:

  • 用节点运行任何东西都可以吗?
  • 可以发which nodenode -v吗?你在什么操作系统上运行 NodeJS,你是如何安装和更新 NodeJS 的?
  • 该应用似乎可以通过运行node node.js --- which node return '/usr/local/bin/node' node -v return 'v.0.10.34' 来工作
  • nohup 会不会有问题...如果它以node ./node.js 运行但不是nohup ./node.js 运行时

标签: javascript node.js


【解决方案1】:

您看到的错误是由于您尝试执行脚本的方式造成的。 node ./node.js 有效,因为您通过节点显式加载脚本。

但是nohup ./node.js 不起作用,因为 shell 期望文件是 shell 脚本。如果你想以这种方式执行你的脚本,你需要添加适当的 hash bang 行来告诉 shell 使用什么程序来解释文件。例如:#!/usr/bin/env node

【讨论】:

  • 我原本在运行nohup node ./node.js &,但在切换过程中显然丢失了命令.. 谢谢!