#vue.js #vuex #nuxtjs
#vue.js #vuex #nuxtjs
Вопрос:
Я пытаюсь перенести свое приложение Vue на nuxt.js и столкнулся с проблемой с модулем хранилища, в который я импортирую библиотеку криптографических узлов. Эта библиотека обращается к объекту «window», который, естественно, существует только на стороне клиента. Сам факт нахождения этого модуля в каталоге магазина приводит к сбою приложения. AFAIK, я могу импортировать его как плагин в nuxt.config.js но как мне после этого прикрепить его к магазину? Спасибо!
На самом деле, я больше не уверен, вызвана ли ошибка SSR, поскольку я вижу ее в браузере. Просто подумал, что это так из-за того, что «окно не определено». Я также пытался импортировать crypto-pro на страницу — он выдает ту же ошибку. Естественно, в обычном проекте vue это работает нормально.
Вот мой store/index.js
import crypto from "../plugins/crypto";
export const plugins = [crypto];
export const state = () => ({
});
Вот crypto.js модуль. В
import Vue from 'vue';
import {createHashSignature, getHashedData, getUserCertificates, isValidSystemSetup, verifySignature } from 'crypto-pro';
import FileReader from '@tanker/file-reader';
export default {
namespaced: true,
state: {some state},
mutations: {some mutations},
actions: {some actions}
}
Вот что я получаю, когда пытаюсь открыть сайт
Окно ReferenceError не определено
node_modulescrypto-prolibcrypto-pro.js
define("cryptoPro", [], factory);
else if(typeof exports === 'object')
exports["cryptoPro"] = factory();
else
root["cryptoPro"] = factory();
})(window, function() {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
сам модуль crypto-pro представляет собой API для работы с плагином браузера, который подключается к провайдеру криптографии на ПК пользователя.
Комментарии:
1. Есть ли какие-либо записи в журнале, выходные данные, … вы можете поделиться? Приходит ли какое-либо сообщение об ошибке?
2.
if(process.client) { ... }
это может быть?
Ответ №1:
Вы можете создать плагин, подобный этому:
export default function ({ store }) {
if (process.client) {
//do something on client side
}
}
Деструктура store
вне контекста
Комментарии:
1. Да, это то, о чем я сначала подумал, но, похоже, моя проблема начинается с того, как работает модуль crypto-pro в проекте nuxt.