2013-05-12 21 views
11

単純に、私はcronを使ってnodejsスクリプトの実行を自動化しようとしていますが、スクリプト自体はファイルを実行できないようです。私のスクリプトは単純です:bashスクリプトからノードを実行しています

#!/usr/bin/env node 
node /var/node/assets/js/update.js 

しかし、これを実行するには、それがパス機能の始まりが正しくないことを返します。

/home/dev/update.sh:2 
node /var/node/assets/js/update.js 
     ^^^ 
SyntaxError: Unexpected token var 
    at Module._compile (module.js:439:25) 
    at Object.Module._extensions..js (module.js:474:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Function.Module.runMain (module.js:497:10) 
    at startup (node.js:119:16) 
    at node.js:901:3 

はbashのと、実際に何か問題がある、またはノードが持っていませんこれを行う具体的な方法?私は/ bin/envを使って、バージョンに関係なく "ノード"の適切な形式を持つことができました。

答えて

29

ノード内からノードを実行しようとしているようです。エラーメッセージはノードから来て、ノードがコマンド/var/node/assets/js/update.jsを実行しようとしていたようです。

私はシバンの行にノードではなくbashを指定します。

トップライン

#!/usr/bin/env node 

次にくるものがJavaScriptコードではなく、bashのでなければならないことを意味します。

+0

Curses!ちょうど同じものを入力しようとしていた。他の選択肢は、そのファイルの中に直接javascriptを含めることです。 – Pickels

+0

しかし、そういう意味で、私が道を提供しただけではうまくいくわけではありませんか?なぜなら、私が道を離れるときには、そのようなエラーが発生するからです。http://pastie.org/pastes/7899197/text – Rogue

+0

すみません。私は従わない。エラーが表示されますが、エラーを発生させるために正確に何をしますか? –

9

変更されていない環境では、すでに最初の行でノードを実行しています。

次に、2行目に、そのノードプロセスにコマンドnode /var/node/assets/js/update.jsを入力します。これについて

#!/usr/bin/bash 
node /var/node/assets/js/update.js 
+0

いいえ、これは実行時に停止しているようです(どのスクリプトを実行しているかに関係なく) – Rogue

+0

この回答は@Rayのコメントとどう違うのですか? 最後にあなたのソリューションは何でしたか? – stackunderflow

+0

私は若干、envノード変数の使用をあきらめ、代わりにbashを使用してスクリプトを作成しました。彼の答えが最初であったので、私は単にレイズを尋ねた。 – Rogue

0

方法:これについて

どのように?

#!/bin/bash 

node /var/node/assets/js/update.js 
関連する問題