【问题标题】:Nuxt FingerprintJS Module Server and Client solution?Nuxt FingerprintJS 模块服务器和客户端解决方案?
【发布时间】:2021-08-27 21:51:34
【问题描述】:

我在 NuxtJS+Firebase 项目 VuexStore 中使用指纹。

当我在客户端调用该函数时,可以获得访客 ID。但是如果我像 nuxtServerInit 这样在服务器端使用,我就无法获得。

  const fpPromise = FingerprintJS.load();
            const abc = (async() => {
                const fp = await fpPromise
                const result = await fp.get()
                const visitorId = result.visitorId
                return visitorId;
            })()
            abc.then(
                function(value) {
                    state.visitorId = value
                },
                function(error) {
                    return error
                }
            )

有解决办法吗?

【问题讨论】:

    标签: javascript node.js firebase vue.js nuxt.js


    【解决方案1】:

    来自NuxtJS documentation(关于服务器渲染):

    因为您处于 Node.js 环境中,所以您可以访问 Node.js 对象,例如 req 和 res。您无权访问该窗口或 文档对象,因为它们属于浏览器环境。你可以 但是通过使用 beforeMount 或安装来使用窗口或文档 钩子。

    FingerprintJS 在很大程度上依赖于浏览器(例如 here)(因此浏览器指纹识别)。这意味着它需要例如window 在服务器端渲染上下文中不可用的对象。

    我对 NuxtJS 不是很有经验,但是,according to the documentation,您应该将指纹代码添加到 .vue 文件中,例如

    if (process.client) {
      require('external_library')
    }
    

    祝你好运!

    【讨论】: