简体   繁体   中英

Running node from a bash script

Quite simply, I'm attempting to automate running a nodejs script using cron, however the script itself doesn't seem to be able to run the file. My script is simple:

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

However, in running this, it returns that the beginning of the pathing is incorrect:

/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

Is there something actually wrong with the bash, or does node have a specific way of doing this? I used /bin/env so that I could have the proper form of "node" regardless of version.

It looks like you are trying to run node from within node. The error message came from node and it looks like node was trying to run the command /var/node/assets/js/update.js .

I would make the shebang line specify bash rather than node.

The top line

#!/usr/bin/env node

means that what follows should be JavaScript code, not bash.

You are already running node on the first line in an unmodified environment.

then on the second line you supply the command node /var/node/assets/js/update.js to that node process.

How about this:

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

How about this?

#!/bin/bash

node /var/node/assets/js/update.js

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM