openshift,cron,node,第 1 行:意外标记“(”附近出现语法错误

openshift,cron,node,第 1 行:意外标记“(”附近出现语法错误

我非常确定这是某种配置问题,或类似问题。我使用的是 node V 0.10 和 cron cartridge V 1.4。

这是运行我的节点脚本的 bash 脚本:

#!/bin/bash

node ${OPENSHIFT_REPO_DIR}.openshift/cron/daily/cron.js

这是我的节点脚本

var mongoose    = require('mongoose');
var express     = require('express');
var moment      = require('moment');
var _                   =   require('lodash');
var D               = require('d.js');
var events = require('events');
var eventEmitter = new events.EventEmitter();

日志中的错误是

 __________________________________________________________________________
 Thu Mar 19 03:45:35 EDT 2015: START daily cron run
 __________________________________________________________________________
 /var/lib/openshift/54e408fbe0b8cd1f400000a9/app-root/runtime/repo//.openshift/cron/daily/cron.js:
 /var/lib/openshift/54e408fbe0b8cd1f400000a9/app-root/runtime/repo//.openshift/cron/daily/cron.js: line 1: syntax error near unexpected token `('
 /var/lib/openshift/54e408fbe0b8cd1f400000a9/app-root/runtime/repo//.openshift/cron/daily/cron.js: line 1: `var mongoose    = require('mongoose');'
 /var/lib/openshift/54e408fbe0b8cd1f400000a9/app-root/runtime/repo//.openshift/cron/daily/cron.sh:
 [Error: /var/lib/openshift/54e408fbe0b8cd1f400000a9/app-root/runtime/repo/node_modules/mongoose/node_modules/mongodb/node_modules/bson/build/Release/bson.node: invalid ELF header]
 js-bson: Failed to load c++ bson extension, using pure JS version
 __________________________________________________________________________
 Thu Mar 19 03:46:11 EDT 2015: END daily cron run - status=0
 __________________________________________________________________________

我知道 cron 正在运行 node,因为如果没有 bash 调用它,它永远不会运行此文件。所以这是参数问题吗?我是否遗漏了一些显而易见的东西?

答案1

OpenShift 运行每一个将文件存放在.openshift/cron/*相关时间表上的目录中。

cron.js因此,我们看到bash 正在执行first并抛出语法错误。然后紧接着cron.sh执行。

要解决该问题,请删除cron.sh并将其添加到第一行cron.js

#!/usr/bin/env node

var mongoose = ...

hashbang 告诉 Linux 使用node而不是默认 shell 来执行脚本。

请记住,在签入脚本之前它必须是可执行的(但我认为您已经这样做了)。

chmod +x .openshift/cron/daily/cron.js

相关内容