javascript - 有没有办法将 JavaScript 字符串作为某些函数执行?我正在使用 eval 但它不起作用

标签 javascript serenity-js

有没有办法将 JavaScript 字符串作为某些函数执行?我正在使用 eval 但它不起作用。

我正在尝试此操作,因为我需要从 YML 文件中读取值以进行 serenity js 测试。

这就是我想做的

this.data = "element1.element2" 
this.test1 = "safeLoad(readFileSync(`config/${this.fileName}.yml`, 'utf8'))";
console.log(this.test1)
console.log(`${this.test1}.${this.data}`);

这就是我尝试执行字符串的方式

eval(`${this.testabc}.${this.data}`)

但是,当我执行此操作时,出现以下错误:

ReferenceError: safeLoad is not defined

P.S.:如果我正常执行代码(不进行评估),它就可以正常工作!

safeLoad(readFileSync(`config/${this.fileName}.yml`, 'utf8')).element1.element2

有人知道如何将这样的代码作为字符串执行吗?

最佳答案

我猜你使用 es6 语法导入 safeLoad

如果是,当你使用babel转译代码时,safeLoad将会被省略。因为安全加载的转译器不会在您的代码中使用。

要了解,请查看下面的图片,或this babel example .

enter image description here

要解决此问题,您应该使用 require 而不是 import(es6):

// instead of
import safeLoad from 'safeLoad'
// use this:
const safeLoad = require('safeLoad').default

// instead of
import { safeLoad } from 'safeLoad'
// use this:
const { safeLoad } = require('safeLoad')

关于javascript - 有没有办法将 JavaScript 字符串作为某些函数执行?我正在使用 eval 但它不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59519887/

相关文章:

javascript - Javascript 测试用例中的虚假字符 : all breaks

java - CSRF token 验证失败,如何使用serenity放心框架修复?

java - 从命令行启动单个 Serenity 场景

java - 如何初始化驱动程序对象以便所有类都可以使用它

javascript - Queryselector 删除多余的逗号分隔的项目列表

javascript - Pannellum 360 图像查看器 - 获取俯仰和偏航

javascript - 如何在谷歌地图中画一个圆圈

javascript - 如何将功能与 Javascript 代码分开以设置超时?