如何导入可能有语法错误的模块?
Posted
技术标签:
【中文标题】如何导入可能有语法错误的模块?【英文标题】:How do you import a module that may have syntax errors in it? 【发布时间】:2020-12-21 20:47:28 【问题描述】:我有两个脚本a.js
和b.js
。 b.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:确保您将评估的代码是可信的,否则您将容易受到远程代码执行的攻击
【讨论】:
以上是关于如何导入可能有语法错误的模块?的主要内容,如果未能解决你的问题,请参考以下文章
导入 ECMAScript 6 时出现“未捕获的语法错误:无法在模块外使用 import 语句”
尝试在 Jasmine 规范文件中导入类时出现“语法错误:无法在模块外使用导入语句”
Jest + Vue3 + @Vueform/slider “语法错误:不能在模块外使用导入语句”