如何导入其中可能存在语法错误的模块?

问题描述

我有两个脚本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 }

解决方法

您可以在try / catch块上要求该模块:

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');
}

提示:请确保您要评估的代码是可信赖的,否则您将很容易受到远程代码执行的影响