2015-05-25 3 views
0

Я хотел бы выполнить файл JS, переданный в аргументе в моем NodeJS приложения (без требуют друг друга)Выполнить внешний Javascript NodeJS

Пример:

$ node myapp test.js 

test.js

console.log("Do some work") 
test(); 

myapp.js

var test = function(){ console.log("Test working"); 
here_execute_js_in_process.argv[2](); 

Я попробовал самый простой вариант, прочитать файл благодаря fs.readFile и Eval привел данные:

fs.readFile(script, function(err,data){ 
     if(err) console.log(err); 
     eval(data); 
    }); 

, но не работали, вы получили какое-либо решение?

+0

В каком смысле не 'eval' работа? В любом случае, вы можете взглянуть на ['vm.runInNewContext'] (https://nodejs.org/api/vm.html#vm_vm_runinnewcontext_code_sandbox_options). – Ryan

+0

check http://stackoverflow.com/questions/4351521/how-to-pass-command-line-arguments-to-node-js this –

ответ

1

Test.js хороший как есть.

Слегка модифицированный myapp.js:

var fs = require('fs'); 

function include(inc) { 
    eval(fs.readFileSync(inc, 'utf-8').toString()); 
} 

console.log("Running myapp.js with arg[2]=[%s]", process.argv[2]); 
var test = function() { console.log("Test working")}; 
if (process.argv[2]) 
    include(process.argv[2]); 
+0

Да, это было не так! – Lombric

+0

Обратите внимание, что область [с глобальным] исчезла. Я протестировал его, и он по-прежнему работает с изменением. –

+0

yep, я протестировал и отредактировал ваш ответ, спасибо большое. Майкл – Lombric