Cron
openshift,cron,節點,第 1 行:意外標記 `(’ 附近的語法錯誤
我很確定這是某種配置問題,或者類似的問題。我正在使用節點 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/*
因此,我們看到 first
cron.js
正在由 bash 執行並引發語法錯誤。然後立即cron.sh
執行。要解決此問題,請刪除
cron.sh
並將其添加到的第一行cron.js
:#!/usr/bin/env node var mongoose = ...
node
hashbang 告訴 Linux 使用而不是預設 shell執行腳本。請記住,在您簽入之前,該腳本必須是可執行的(但我認為您已經這樣做了)。
chmod +x .openshift/cron/daily/cron.js