如何导入可能有语法错误的模块?

Posted

技术标签:

【中文标题】如何导入可能有语法错误的模块?【英文标题】:How do you import a module that may have syntax errors in it? 【发布时间】:2020-12-21 20:47:28 【问题描述】:

我有两个脚本a.jsb.jsb.js 可能有语法错误。我该如何解释?

a.js

let codeForRunning = require('b.js');

try 
    resultOfCode = codeForRunning.func(TEST);

catch (err) 
    resultOfCode = err


b.js

function myFunction (argument) 
    return 'Hello world


module.exports =  func: saveWrittenCode 

【问题讨论】:

【参考方案1】:

你可以在 try/catch 块上 require 模块:

try 
    const b = require('./b');
    // Code
 catch (err) 
   console.log('Module b could not be loaded');


另一种选择是将模块作为文本加载并在运行时进行评估:

const fs = require('fs');

const b = fs.readFileSync('./b.js', 'utf8');

try 
    const evaluated = eval(b);
    // Code
 catch (err) 
   console.log('Module b could not be loaded');

Obs:确保您将评估的代码是可信的,否则您将容易受到远程代码执行的攻击

【讨论】:

以上是关于如何导入可能有语法错误的模块?的主要内容,如果未能解决你的问题,请参考以下文章