是否可以将JavaScript字符串作为某些函数执行?我正在使用eval,但无法正常工作

问题描述 投票:0回答:2

是否有一种方法可以将JavaScript字符串作为某些函数执行?我正在使用eval,但无法正常工作。

我正在尝试此操作,因为我需要从YML文件中读取值以进行我的宁静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

有人知道如何像字符串一样执行代码吗?

javascript serenity-js
2个回答
0
投票

我想您使用es6语法import safeLoad

[如果是,当您使用babel来转码时,safeLoad将被省略。因为尽管该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')

0
投票

@龙阮

效果很好!非常感谢!

© www.soinside.com 2019 - 2024. All rights reserved.