Похоже, должен быть способ изменить значение browser
. Машинописный текст не позволяет присваивать значения, например browser = true;
, что приводит к ошибке: Cannot assign to 'browser' because it is an import.ts(2632)
пользователи.test.ts
import { describe, it, expect } from "vitest";
import { isAdmin } from "./users";
describe('isAdmin', () => {
it('should throw an error when called on the client side', () => {
expect(() => isAdmin("")).toThrowError('isAdmin should not be called on the client side');
});
it('should not throw when called from server', () => {
expect(() => isAdmin("")).not.toThrow();
});
});
пользователи.ts
import { browser } from '$app/environment';
/**
* System admin
* @param userEmail
* @returns true if user is admin and can manage all events
*/
export const isAdmin = (userEmail: string) => {
if (browser) {
throw new Error('isAdmin should not be called on the client side');
}
//...
return false;
}
🤔 А знаете ли вы, что...
С Svelte можно создавать однофайловые компоненты с расширением .svelte.
Похоже, ваша цель — запретить использование функции на клиенте. Вместо использования browser
я бы использовал Серверные модули.