siyuan-note/siyuan · error

Conf.Language(194)

Error message

Conf.Language(194)

What it means

SetSyncProviderWebDAV rejects endpoints containing 'dav.jianguoyun.com' with Conf.Language(194), which links to Nutstore's API restrictions. SiYuan's sync engine hits Nutstore's rate/interface limits and breaks, so the kernel explicitly blocks configuring Nutstore WebDAV as a sync provider (issue #7657).

Source

Thrown at kernel/model/sync.go:590

	s3.SecretKey = strings.TrimSpace(s3.SecretKey)
	s3.Bucket = strings.TrimSpace(s3.Bucket)
	s3.Region = strings.TrimSpace(s3.Region)
	s3.Timeout = util.NormalizeTimeout(s3.Timeout)
	s3.ConcurrentReqs = util.NormalizeConcurrentReqs(s3.ConcurrentReqs, conf.ProviderS3)

	Conf.Sync.S3 = s3
	Conf.Save()
	refreshLANSyncManager()
	return
}

func SetSyncProviderWebDAV(webdav *conf.WebDAV) (err error) {
	webdav.Endpoint = strings.TrimSpace(webdav.Endpoint)
	webdav.Endpoint = util.NormalizeEndpoint(webdav.Endpoint)

	// 不支持配置坚果云 WebDAV 进行同步 https://github.com/siyuan-note/siyuan/issues/7657
	if strings.Contains(strings.ToLower(webdav.Endpoint), "dav.jianguoyun.com") {
		err = errors.New(Conf.Language(194))
		return
	}

	webdav.Username = strings.TrimSpace(webdav.Username)
	webdav.Password = strings.TrimSpace(webdav.Password)
	webdav.Timeout = util.NormalizeTimeout(webdav.Timeout)
	webdav.ConcurrentReqs = util.NormalizeConcurrentReqs(webdav.ConcurrentReqs, conf.ProviderWebDAV)

	Conf.Sync.WebDAV = webdav
	Conf.Save()
	refreshLANSyncManager()
	return
}

func SetSyncProviderLocal(local *conf.Local) (err error) {
	local.Endpoint = strings.TrimSpace(local.Endpoint)
	local.Endpoint = util.NormalizeLocalPath(local.Endpoint)

View on GitHub (pinned to 251596fc0d)

Solutions

  1. Use a different WebDAV provider (Nextcloud, ownCloud, a self-hosted server, etc.).
  2. If you must use Nutstore, switch the sync provider to S3 or Local (Nutstore also offers an S3-compatible interface in some plans) - but WebDAV is intentionally blocked.
  3. Re-read the linked Nutstore restriction doc to understand why WebDAV sync is unsupported.

Example fix

// before
webdav.Endpoint = "https://dav.jianguoyun.com/dav/" // -> error 194
// after: use a supported WebDAV server
webdav.Endpoint = "https://my.nextcloud.example/remote.php/dav/files/me/"
Defensive patterns

Strategy: validation

Validate before calling

// TypeScript: block Nutstore WebDAV in the UI before submit
if (/dav\.jianguoyun\.com/i.test(endpoint)) {
  throw new Error('Nutstore WebDAV is not supported for sync; choose another WebDAV server');
}

Type guard

// TypeScript
const isSupportedWebDAV = (url: string): boolean =>
  !/dav\.jianguoyun\.com/i.test(url);

Prevention

When it happens

Trigger: POST /api/sync/setSyncProviderWebDAV (Settings - Cloud - WebDAV) with an endpoint URL containing dav.jianguoyun.com in any case. The check is case-insensitive substring match on the endpoint.

Common situations: User pastes their Nutstore WebDAV URL expecting it to work like other WebDAV providers. Migrating from a tool that supported Nutstore. Subdomain variants like https://dav.jianguoyun.com/dav/.

Related errors


AI-assisted analysis of siyuan-note/siyuan@251596fc0d (2026-08-12). Data as JSON: /api/errors/96b6cb87e12407eb. Report an issue: GitHub.