由于javascript函数不可序列化,因此有时(尽管很少)为了将它们传递到新的上下文中,将它们字符串化然后在以后重新评估它们可能会很有用:
const foo = () => { // do something }
const fooText = foo.toString()
// later... in new context & scope
const fooFunc = new Function(' return (' + fooText + ').apply(null, arguments)')
fooFunc() // works!
Run Code Online (Sandbox Code Playgroud)
但是,如果foo引用另一个函数bar,则范围不会被字符串化,因此,如果bar未在新的上下文中定义,则被评估的foo函数在调用时将引发错误。
也就是说,不仅要对父函数进行字符串化,还要对从父项调用的子函数的内容进行字符串化。
let bar = () => { alert(1) }
let foo = () => { bar() }
// what toString does
let fooString = foo.toString()
console.log(fooString) // "() => { bar() }"
// …Run Code Online (Sandbox Code Playgroud) 我正在构建一个需要从任何来源访问 sveltkit 端点的嵌入。
如果我使用express,我会简单地使用cors中间件。
我很好奇是否有办法在 sveltkit 端点上启用 CORS,这样我就不需要启动另一个服务。
到目前为止我尝试过的一些事情:
从端点中的获取句柄返回“Access-Control-Allow-Origin”:“*”
覆盖 OPTIONS http 方法(似乎从未被调用)
我看到了这个reddit 帖子,但它似乎已经过时了。