javascript - ( Electron 与服务器)未捕获的 EvalError : Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of script

标签 javascript node.js electron socket.io-1.0

我正在尝试制作一个 Electron 应用程序,用户可以选择“托管私有(private)服务器”或“加入私有(private)服务器”。这样,用户可以与主持人或其他用户交换消息,或者创建一个其他人可以加入的房间

当我的代码位于 main.js ( Electron 应用程序运行的地方)上时,服务器生成没有问题。但是当我尝试将相同的代码放入 Server.js 并在 html 文件中引用它(使用 <script src"">)时,此代码停止工作并显示:

C:\Users\lages\Desktop\Pasta du apepe\electron-quick-start\node_modules\depd\index.js:413 Uncaught EvalError: 拒绝将字符串评估为 JavaScript,因为“unsafe-eval”不是以下内容安全策略指令中允许的脚本源:“script-src 'self' 'unsafe-inline'”

at Function.wrapfunction [as function] (C:\Users\lages\Desktop\Pasta du apepe\electron-quick-start\node_modules\depd\index.js:413)
at Object.<anonymous> (C:\Users\lages\Desktop\Pasta du apepe\electron-quick-start\node_modules\body-parser\index.js:37)
at Object.<anonymous> (C:\Users\lages\Desktop\Pasta du apepe\electron-quick-start\node_modules\body-parser\index.js:159)
at Module._compile (internal/modules/cjs/loader.js:1078)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1108)
at Module.load (internal/modules/cjs/loader.js:935)
at Module._load (internal/modules/cjs/loader.js:776)
at Function.f._load (electron/js2c/asar_bundle.js:5)
at Function.o._load (electron/js2c/renderer_init.js:33)
at Module.require (internal/modules/cjs/loader.js:959)

知道如何解决此错误吗?

我的代码

let ligar_desligar = document.getElementById("botao3")
let statusServer= false 
const expresso= require("express")
var limpador = require("string-sanitizer");
const appe = expresso()
const httpServer = require("http").createServer(appe);
const options ={  
}
const io = require("socket.io")(httpServer, options);
appe.use(expresso.static(__dirname+"/data"))
httpServer.listen(8889, ()=>console.log("adm online na porta http://localhost:8889"))
//SERVER EVENTS SECTION
io.on("connection", (socket) => { 
    console.log("nova conexao, o cara conectado e ID: ", socket.id)
    socket.on("manda", (arg) => {
        limpeza(arg)
        console.log("recebi: ",arg); // world
        socket.broadcast.emit("devolve", arg)
        socket.emit("devolve", arg)
    });
})
function limpeza(palavra){
    limpador.sanitize.keepSpace(palavra); // abcdefgh123
}

最佳答案

问题已解决,我只需要添加

meta http-equiv="Content-Security-Policy"content="default-src 'self'; style-src 'self'; script-src 'self' 'unsafe-eval'"

在html的meta标签中

关于javascript - ( Electron 与服务器)未捕获的 EvalError : Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of script,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68310331/

相关文章:

api - preload.js 中的 ipcRenderer.on 如何检测 webContents.send?

javascript - 设置初始应用 View - Chrome App/Electron/JS

build - 使用 Azure 函数为 Windows 版本构建软件?

javascript - 从函数的内部范围返回值

node.js - 回调()或返回回调()

javascript - 如何将 Kendo AutoComplete 控件的值设置为 javascript 对象?

node.js - 播种对象时的钩子(Hook)

node.js - Gulp:无依赖的同步性

javascript - 如何让脚本在 Jade 中跨越多行?

javascript - 我可以在一行中将几个键值对作为文字添加到 JavaScript 对象中吗?