80829


<script> タグで読み込まれているウェブ上の複数ファイルを node で動かしたいです

例えば

[code]

    <script src="sub.js"></script>
    <script src="main.js"></script>
    
[/code]

となってるときに 2 つのJSファイルをダウンロードして同じディレクトリにおいて  
node main  
で実行したとき sub.js で定義してあるクラスや関数を使う楽な方法はないでしょうか

複数ファイルを１つにつなぐか

sub.js の中に

[code]

    exports.xxx = xxx;
    
[/code]

をかいていくしかないんでしょうか？

できれば main の方は書き換えてもいいんですが  
sub の方になるべく手を入れずに実現したいですが方法はないでしょうか


CC BY-SA 4.0
2021-08-11T10:30:05.410
80724
2021-08-15T19:02:07.610
2021-08-12T22:08:10.010
question
javascript node.js
export 宣言されてない分割された JS を node で使う方法はありませんか？


複数ファイルを１ファイルにまとめる方法がうまくいくのであれば、次の方法でもうまくいくと思います。

[code]

    cat main.js sub.js | node
    
[/code]


CC BY-SA 4.0
2021-08-15T02:52:06.973
80808
2021-08-15T10:49:21.163
2021-08-15T10:49:21.163
3060
35558
80724
answer


> できれば main の方は書き換えてもいいんですが  
>  sub の方になるべく手を入れずに実現したいですが方法はないでしょうか

[script.runInThisContext()](https://nodejs.org/api/vm.html#vm_script_runinthiscontext_options)
を使う方法も考えられます。

**main.js**

[code]

    function include_extra_file(path) {
      const fs = require('fs');
      const vm = require('vm');
      vm.runInThisContext(fs.readFileSync(path));
    }
    
    include_extra_file('./sub.js');
    
    // main
    console.log('main');
    sub();
    
[/code]

**sub.js**

[code]

    function sub() {
      console.log('sub');
    }
    
[/code]

**実行結果**

[code]

    $ node main
    main
    sub
    
[/code]


CC BY-SA 4.0
2021-08-15T18:24:34.320
80829
2021-08-15T19:02:07.610
2021-08-15T19:02:07.610
47127
47127
80724
answer