javascript - 有没有办法将 JavaScript 字符串作为某些函数执行?我正在使用 eval 但它不起作用
问题描述
有没有办法将 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
PS:如果我正常执行代码(没有 eval)它工作正常!
safeLoad(readFileSync(`config/${this.fileName}.yml`, 'utf8')).element1.element2
有谁知道如何将这样的代码作为字符串执行?
解决方案
我猜你import safeLoad
使用的是 es6 语法。
如果是,当你使用babel
转译代码时,safeLoad
将被省略。因为尽管 safeLoad 的转译器不会在您的代码上使用。
要理解,请查看下面的图片,或者这个 babel 示例。
要解决此问题,您应该使用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 - 如何在framework7 version1中为弹出窗口设置自动关闭
- javascript - 错误:在实现 react-native-maps 时尝试注册两个具有相同名称的视图 AIRMap...
- java - 如何在 Gradle 和 Eclipse 之间同步 Java 源和目标?
- git - 当有人推送到主远程存储库(gitlab)时,如何更新镜像远程存储库(自己的服务器)?
- c - 如何在控制台中运行c项目
- python - 纬度经度坐标在 python 浮点数中填充了额外的数字
- node.js - Feathers 示例中的 POST 方法
- html - 如何使用 htmltab 包从维基百科解析表格?
- selenium-webdriver - 同时使用 Selenium chrome 和 gecko 驱动
- c# - ASP.NET 如何跟踪客户端事件?