<!doctype html>
<html>

<!--

!!! WARNING !!!

This file was auto-generated from readme/build_troubleshooting.md and any manual change
made to it will be overwritten. To make a change to this file please modify
the source Markdown file:

https://github.com/laurent22/joplin/blob/dev/readme/build_troubleshooting.md

-->

<head>
	<title>Desktop application | Joplin</title>
	<meta charset="utf-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<link rel="stylesheet" href="https://joplinapp.org/css/bootstrap.min.css">
	<link rel="shortcut icon" type="image/x-icon" href="https://joplinapp.org/favicon.ico">
	<!-- <link rel="stylesheet" href="https://joplinapp.org/css/fontawesome-all.min.css">  -->
	<link rel="stylesheet" href="https://joplinapp.org/css/fork-awesome.min.css"> 
	<script src="https://joplinapp.org/js/jquery-3.2.1.slim.min.js"></script>
	<style>
	body {
		background-color: #F1F1F1;
		color: #333333;
	}

	.root {
		overflow: hidden;
	}

	a[href^="mailto:"] {
		word-break: break-all;
	}

	table {
		margin-bottom: 1em;
	}
	td, th {
		padding: .8em;
		border: 1px solid #ccc;
	}

	.page-markdown table pre,
	.page-markdown table blockquote {
		margin-bottom: 0;
	}

	.page-markdown table pre,
	.page-markdown table blockquote {
		margin-bottom: 0;
	}

	.page-markdown table pre {
		background-color: rgba(0,0,0,0);
		border: none;
		margin: 0;
		padding: 0;
	}

	h1, h2 {
		border-bottom: 1px solid #eaecef;
		padding-bottom: 0.3em;
		font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
		font-weight: 600;
		font-size: 2em;
		margin-bottom: 16px;
	}
	h2 {
		font-size: 1.6em;
	}
	h3 {
		font-size: 1.3em;
	}
	code {
		color: black;
		background-color: #eee;
		border: 1px solid #ccc;
		font-size: .85em;
	/*	word-break: break-all; */
	}
	pre code {
		border: none;
	}
	pre {
		font-size: .85em;
	}
	blockquote {
		font-size: 1em;
		color: #555;
	};
	#toc ul {
		margin-bottom: 10px;
	}
	#toc > ul > li {
		margin-bottom: 10px;
	}
	#toc {
		padding-bottom: 1em;
	}
	.title {
		display: flex;
		align-items: center;
	}
	.title-icon {
		display: flex;
		height: 1em;
	}
	.title-text {
		display: flex;
		font-weight: normal;
		margin-bottom: .2em;
		margin-left: .5em;
	}
	.sub-title {
		font-weight: normal;
	}
	.container {
		background-color: white;
		padding: 0;
		box-shadow: 0 10px 20px #888888;
	}
	table.screenshots {
		margin-top: 2em;
		margin-bottom: 2em;
	}
	table.screenshots th {
		height: 3em;
		text-align: center;
	}
	table.screenshots th, 
	table.screenshots td {
		border: 1px solid #C2C2C2;
	}
	img[align="left"] {
		margin-right: 10px;
		margin-bottom: 10px;
	}
	.mobile-screenshot {
		height: 40em;
		padding: 1em;
	}
	.cli-screenshot-wrapper {
		background-color: black;
		vertical-align: top;
		padding: 1em 2em 1em 1em;
	}
	.cli-screenshot {
		font-family: "Monaco", "Inconsolata", "CONSOLAS", "Deja Vu Sans Mono", "Droid Sans Mono", "Andale Mono", monospace;
		background-color: black;
		color: white;
		border: none;
	}
	.cli-screenshot .prompt {
		color: #48C2F0;
	}
	.top-screenshot {
		margin-top: 2em;
		text-align: center;
	}
	.header {
		position: relative;
		padding-left: 2em;
		padding-right: 2em;
		padding-top: 1em;
		padding-bottom: 1em;
		color: white;
		background-color: #2B2B3D;
	}
	.header a h1 {
		color: white;
	}
	.header a:hover {
		text-decoration: none;
	}
	.content {
		padding-left: 2em;
		padding-right: 2em;
		padding-bottom: 2em;
		padding-top: 2em;
	}
	.forkme {
		position: absolute;
		right: 0;
		top:0;
	}
	.nav-wrapper {
		position: relative;
		width: inherit;
	}
	.nav {
		background-color: black;
		display: flex;
		flex-direction: row;
		align-items: center;
	}
	.nav.sticky {
		position:fixed;
		top: 0;
		width: inherit;
		box-shadow: 0 0 10px #000000;
	}
	.nav a {
		color: white;
		display: inline-block;
		padding: .6em .9em .6em .9em;
	}
	.nav ul {
		padding-left: 2em;
		margin-bottom: 0;
		display: table-cell;
		display: flex;
		width: 100%;
	}
	.nav ul li {
		display: inline-block;
		padding: 0;
	}
	.nav li.selected {
		background-color: #222;
		font-weight: bold;
	}
	.nav-right {
		display: flex;
		text-align: right;
		vertical-align: middle;
		line-height: 0;
		margin-right: 10px;
	}
	.nav-right .share-btn {
		display: none;
	}
	.nav-right .small-share-btn {
		display: none;
	}
	.footer {
		padding: 2em;
		border-top: 1px solid #d4d4d4;
		margin-top: 2em;
		color: gray;
		font-size: .9em;
	}
	a.heading-anchor {
		display: inline-block;
		opacity: 0;
		width: 1.3em;
		font-size: 0.7em;
		margin-left: 0.4em;
		line-height: 1em;
		text-decoration: none;
		transition: opacity 0.3s;
	}
	a.heading-anchor:hover,
	h1:hover a.heading-anchor,
	h2:hover a.heading-anchor,
	h3:hover a.heading-anchor,
	h4:hover a.heading-anchor,
	h5:hover a.heading-anchor,
	h6:hover a.heading-anchor {
		opacity: 1;
	}

	@media (min-width: 992px) {
		.content{
			display: flex;
		}

		#toc{
			display: block!important;
			align-self: flex-start;
			width: 300px;
			position: sticky; top: 20px; left: 0;            
		}

		.main{
			width: calc(100% - 300px);
		}
	}

	.bottom-links {
		display: flex;
		justify-content: center;
		border-top: 1px solid #d4d4d4;
		margin-top: 30px;
		padding-top: 25px;
	}

	@media all and (min-width: 400px) {
		.nav-right .share-btn {
			display: inline-block;
		}
		.nav-right .small-share-btn {
			display: none;
		}
	}
</style>
</head>

<body>

<div class="container root page-build_troubleshooting">

<div class="header">
	<a class="forkme" href="https://github.com/laurent22/joplin"><img src="https://joplinapp.org/images/ForkMe.png"/></a>
	<a href="https://joplinapp.org"><h1 class="title"><img class="title-icon" src="https://joplinapp.org/images/Icon512.png"><span class="title-text">Joplin</span></h1></a>
	<p class="sub-title">An open source note taking and to-do application with synchronisation capabilities</p>
</div>

<div class="nav-wrapper">
	<div class="nav">
		<ul>
			<li class=""><a href="https:&#x2F;&#x2F;joplinapp.org/" title="Home"><i class="fa fa-home"></i></a></li>
			<li><a href="https://discourse.joplinapp.org" title="Forum">Forum</a></li>
			<li><a class="help" href="#" title="Menu">Menu</a></li>
			<!-- <li><a class="gsod" href="https://joplinapp.org/gsod2020/" title="Google Season of Docs 2020">GSoD 2020</a></li> -->
		</ul>
		<div class="nav-right">
			<!--
				<iframe class="share-btn" src="https://www.facebook.com/plugins/share_button.php?href=http%3A%2F%2Fjoplinapp.org&layout=button&size=small&mobile_iframe=true&width=60&height=20&appId" width="60" height="20" style="border:none;overflow:hidden" scrolling="no" frameborder="0" allowTransparency="true"></iframe>
				<iframe class="share-btn" src="https://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fjoplinapp.org" width="62" height="20" title="Tweet" style="border: 0; overflow: hidden;"></iframe>
			-->
			<iframe class="share-btn share-btn-github" src="https://ghbtns.com/github-btn.html?user=laurent22&repo=joplin&type=star&count=true" frameborder="0" scrolling="0" width="100px" height="20px"></iframe>
		</div>
	</div>
</div>

<div class="content">
	<div id="toc"><ul>
<li>
<p>Applications</p>
<ul>
<li><a href="https://joplinapp.org/desktop/">Desktop application</a></li>
<li><a href="https://joplinapp.org/mobile/">Mobile applications</a></li>
<li><a href="https://joplinapp.org/terminal/">Terminal application</a></li>
<li><a href="https://joplinapp.org/clipper/">Web Clipper</a></li>
</ul>
</li>
<li>
<p>Support</p>
<ul>
<li><a href="https://discourse.joplinapp.org">Joplin Forum</a></li>
<li><a href="https://joplinapp.org/markdown/">Markdown Guide</a></li>
<li><a href="https://joplinapp.org/e2ee/">How to enable end-to-end encryption</a></li>
<li><a href="https://joplinapp.org/conflict/">What is a conflict?</a></li>
<li><a href="https://joplinapp.org/debugging/">How to enable debug mode</a></li>
<li><a href="https://joplinapp.org/rich_text_editor/">About the Rich Text editor limitations</a></li>
<li><a href="https://joplinapp.org/faq/">FAQ</a></li>
</ul>
</li>
<li>
<p>Joplin API - Get Started</p>
<ul>
<li><a href="https://joplinapp.org/api/overview/">Joplin API Overview</a></li>
<li><a href="https://joplinapp.org/api/get_started/plugins/">Plugin development</a></li>
<li><a href="https://joplinapp.org/api/tutorials/toc_plugin/">Plugin tutorial</a></li>
</ul>
</li>
<li>
<p>Joplin API - References</p>
<ul>
<li><a href="https://joplinapp.org/api/references/plugin_api/classes/joplin.html">Plugin API</a></li>
<li><a href="https://joplinapp.org/api/references/rest_api/">Data API</a></li>
<li><a href="https://joplinapp.org/api/references/plugin_manifest/">Plugin manifest</a></li>
<li><a href="https://joplinapp.org/api/references/plugin_loading_rules/">Plugin loading rules</a></li>
</ul>
</li>
<li>
<p>Development</p>
<ul>
<li><a href="https://github.com/laurent22/joplin/blob/dev/BUILD.md">How to build the apps</a></li>
<li><a href="https://joplinapp.org/spec/e2ee/">End-to-end encryption spec</a></li>
<li><a href="https://joplinapp.org/spec/history/">Note History spec</a></li>
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
<p>Google Summer of Code 2020</p>
<ul>
<li><a href="https://joplinapp.org/gsoc2020/index/">Google Summer of Code 2020</a></li>
<li><a href="https://joplinapp.org/gsoc2020/ideas/">Project Ideas</a></li>
</ul>
</li>
<li>
<p>About</p>
<ul>
<li><a href="https://joplinapp.org/changelog/">Changelog (Desktop App)</a></li>
<li><a href="https://joplinapp.org/changelog_cli/">Changelog (CLI App)</a></li>
<li><a href="https://joplinapp.org/stats/">Stats</a></li>
<li><a href="https://joplinapp.org/donate/">Donate</a></li>
</ul>
</li>
</ul>
</div>

	<div class="main">
<h1>Desktop application<a name="desktop-application" href="#desktop-application" class="heading-anchor">🔗</a></h1>
<h2>On Windows<a name="on-windows" href="#on-windows" class="heading-anchor">🔗</a></h2>
<p>If <code>yarn dist</code> fails, it may need administrative rights.</p>
<p>If you get an <code>error MSB8020: The build tools for v140 cannot be found.</code> try to run with a different toolset version, eg <code>npm install --toolset=v141</code> (See <a href="https://github.com/mapbox/node-sqlite3/issues/1124">here</a> for more info). You may also try to install <code>npm --vs2015 install --global windows-build-tools</code> (the --vs2015 flag is to get toolkit &quot;v140&quot;, which is what is used by default).</p>
<p>There are various errors that can occur from an improper build environment (such as MSBUILD: error MSB3428). It is recommended to install <code>windows-build-tools</code> with the command <code>npm install --global windows-build-tools</code> (elevation required) and then using these two commands to set the environmental variables to the proper values:</p>
<pre><code class="language-batch">call &quot;C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvarsamd64_x86.bat&quot; 
set &quot;PATH=C:\Program Files\nodejs;%PATH%&quot;
</code></pre>
<h2>On Linux and macOS<a name="on-linux-and-macos" href="#on-linux-and-macos" class="heading-anchor">🔗</a></h2>
<p>If there's an error <code>while loading shared libraries: libgconf-2.so.4: cannot open shared object file: No such file or directory</code>, run <code>sudo apt-get install libgconf-2-4</code></p>
<p>If you get a node-gyp related error, you might need to manually install it: <code>npm install -g node-gyp</code>.</p>
<p>If you get the error <code>libtool: unrecognized option '-static'</code>, follow the instructions <a href="https://stackoverflow.com/a/38552393/561309">in this post</a> to use the correct libtool version.</p>
<h2>Other issues<a name="other-issues" href="#other-issues" class="heading-anchor">🔗</a></h2>
<blockquote>
<p>The application window doesn't open or is white</p>
</blockquote>
<p>This is an indication that there's an early initialisation error. Try this:</p>
<ul>
<li>In ElectronAppWrapper, set <code>debugEarlyBugs</code> to <code>true</code>. This will force the window to show up and should open the console next to it, which should display any error.</li>
<li>In more rare cases, an already open instance of Joplin can create strange low-level bugs that will display no error but will result in this white window. A non-dev instance of Joplin, or a dev instance that wasn't properly closed might cause this. So make sure you close everything and try again. Perhaps even other Electron apps running (Skype, Slack, etc.) could cause this?</li>
<li>Also try to delete node_modules and rebuild.</li>
<li>If all else fails, switch your computer off and on again, to make sure you start clean.</li>
</ul>
<blockquote>
<p>How to work on the app from Windows?</p>
</blockquote>
<p><strong>You should not use WSL at all</strong> because this is a GUI app that lives outside of WSL, and the WSL layer can cause all kind of very hard to debug issues. It can also lock files in node_modules that cannot be unlocked when the app crashes. (You need to restart your computer.) Likewise, don't run the TypeScript watch command from WSL.</p>
<p>So everything should be done from a Windows Command prompt or Windows PowerShell running as Administrator. All build and start commands are designed to work cross-platform, including on Windows.</p>
<h1>Mobile application<a name="mobile-application" href="#mobile-application" class="heading-anchor">🔗</a></h1>
<h2>iOS<a name="ios" href="#ios" class="heading-anchor">🔗</a></h2>
<p>If there is an error <code>/joplin/packages/app-mobile/ios/Pods/Target Support Files/Pods-Joplin/Pods-Joplin.debug.xcconfig: unable to open file (in target &quot;Joplin&quot; in project &quot;Joplin&quot;) (in target 'Joplin' from project 'Joplin')</code> run the following commands:</p>
<pre><code>cd ios
pod deintegrate
pod install
</code></pre>

		<div class="bottom-links">
			<a href="https://github.com/laurent22/joplin/blob/dev/readme/build_troubleshooting.md">
				<i class="fa fa-github"></i> Improve this doc
			</a>
		</div>
<script>
	function stickyHeader() { 
		return; // Disabled

		if ($(window).scrollTop() > 179) {
			$('.nav').addClass('sticky'); 
		} else {
			$('.nav').removeClass('sticky');
		}
	}

	$('#toc').hide();

	$('.help').click(function(event) {
		event.preventDefault();
		$('#toc').show();
	});

	$(window).scroll(function() {
		stickyHeader();
	});

	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
	(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
	m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
	})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
	ga('create', 'UA-103586105-1', 'auto');
	ga('send', 'pageview');
</script>

</div></div>

<div class="footer">
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>