Cron

openshift,cron,節點,第 1 行:意外標記 `(’ 附近的語法錯誤

  • March 19, 2015

我很確定這是某種配置問題,或者類似的問題。我正在使用節點 V 0.10 和 cron 磁帶 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 正在執行節點,因為它永遠不會在沒有 bash 呼叫它的情況下執行這個文件。那麼這是一個參數問題嗎?我錯過了一些明顯的東西嗎?

OpenShift按照相關計劃執行目錄中的每個文件。.openshift/cron/*

因此,我們看到 firstcron.js正在由 bash 執行並引發語法錯誤。然後立即cron.sh執行。

要解決此問題,請刪除cron.sh並將其添加到的第一行cron.js

#!/usr/bin/env node

var mongoose = ...

nodehashbang 告訴 Linux 使用而不是預設 shell執行腳本。

請記住,在您簽入之前,該腳本必須是可執行的(但我認為您已經這樣做了)。

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

引用自:https://serverfault.com/questions/676845