Build Failure: Missing TypeScript Dependency During bench get-app builder Installation
Closed this issue · 6 comments
Context
While following the installation steps outlined in the README for the Frappe Builder application, the process fails during the bench get-app builder
command. The error seems to be related to a missing TypeScript dependency, which is required for building the application.
Steps to Reproduce
- Start a Docker container based on frappe/bench.
Note: this issue may not be specific to Docker-based installations, but I have not tested it in other environments).
- Install the Frappe Builder app using the command:
bench get-app builder
- Observe the build failure during the
bench build --app builder
step.
Expected Behavior
The installation and build process should complete successfully as described in the README, without requiring any additional manual intervention.
Actual Behavior
The build process fails with the following error (excerpt):
[vite:vue] [@vue/compiler-sfc] Failed to load TypeScript, which is required for resolving imported types. Please make sure "typescript" is installed as a project dependency.
For full error details, refer to the error trace above.
frappe@9db63f03354e:/workspace/development/frappe-bench$ bench get-app builder
Getting builder
$ git clone https://github.com/frappe/builder.git --depth 1 --origin upstream
Cloning into 'builder'...
remote: Enumerating objects: 353, done.
remote: Counting objects: 100% (353/353), done.
remote: Compressing objects: 100% (288/288), done.
remote: Total 353 (delta 30), reused 191 (delta 18), pack-reused 0 (from 0)
Receiving objects: 100% (353/353), 979.57 KiB | 3.11 MiB/s, done.
Resolving deltas: 100% (30/30), done.
Ignoring dependencies of builder. To install dependencies use --resolve-deps
Installing builder
$ /workspace/development/frappe-bench/env/bin/python -m pip install --quiet --upgrade -e /workspace/development/frappe-bench/apps/builder
$ yarn install --check-files
yarn install v1.22.22
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
warning " > builder-ui@0.0.0" has unmet peer dependency "ace-builds@^1.22.0".
warning "workspace-aggregator-b93b4877-aafa-4987-aa35-37e8f10a9dcc > builder-ui > @tiptap/extension-color@2.6.4" has unmet peer dependency "@tiptap/core@^2.6.4".
warning "workspace-aggregator-b93b4877-aafa-4987-aa35-37e8f10a9dcc > builder-ui > @tiptap/extension-font-family@2.6.4" has unmet peer dependency "@tiptap/core@^2.6.4".
warning "workspace-aggregator-b93b4877-aafa-4987-aa35-37e8f10a9dcc > builder-ui > @tiptap/extension-link@2.6.4" has unmet peer dependency "@tiptap/core@^2.6.4".
warning "workspace-aggregator-b93b4877-aafa-4987-aa35-37e8f10a9dcc > builder-ui > @tiptap/extension-text-style@2.6.4" has unmet peer dependency "@tiptap/core@^2.6.4".
warning "workspace-aggregator-b93b4877-aafa-4987-aa35-37e8f10a9dcc > builder-ui > @tiptap/vue-3@2.6.4" has unmet peer dependency "@tiptap/core@^2.6.4".
warning "workspace-aggregator-b93b4877-aafa-4987-aa35-37e8f10a9dcc > builder-ui > @tiptap/vue-3 > @tiptap/extension-bubble-menu@2.6.4" has unmet peer dependency "@tiptap/core@^2.6.4".
warning "workspace-aggregator-b93b4877-aafa-4987-aa35-37e8f10a9dcc > builder-ui > @tiptap/vue-3 > @tiptap/extension-floating-menu@2.6.4" has unmet peer dependency "@tiptap/core@^2.6.4".
warning "workspace-aggregator-b93b4877-aafa-4987-aa35-37e8f10a9dcc > builder-ui > frappe-ui > @tiptap/extension-highlight@2.6.4" has unmet peer dependency "@tiptap/core@^2.6.4".
warning "workspace-aggregator-b93b4877-aafa-4987-aa35-37e8f10a9dcc > builder-ui > frappe-ui > @tiptap/extension-image@2.6.4" has unmet peer dependency "@tiptap/core@^2.6.4".
warning "workspace-aggregator-b93b4877-aafa-4987-aa35-37e8f10a9dcc > builder-ui > frappe-ui > @tiptap/extension-mention@2.6.4" has unmet peer dependency "@tiptap/core@^2.6.4".
warning "workspace-aggregator-b93b4877-aafa-4987-aa35-37e8f10a9dcc > builder-ui > frappe-ui > @tiptap/extension-placeholder@2.6.4" has unmet peer dependency "@tiptap/core@^2.6.4".
warning "workspace-aggregator-b93b4877-aafa-4987-aa35-37e8f10a9dcc > builder-ui > frappe-ui > @tiptap/extension-table@2.6.4" has unmet peer dependency "@tiptap/core@^2.6.4".
warning "workspace-aggregator-b93b4877-aafa-4987-aa35-37e8f10a9dcc > builder-ui > frappe-ui > @tiptap/extension-table-cell@2.6.4" has unmet peer dependency "@tiptap/core@^2.6.4".
warning "workspace-aggregator-b93b4877-aafa-4987-aa35-37e8f10a9dcc > builder-ui > frappe-ui > @tiptap/extension-table-header@2.6.4" has unmet peer dependency "@tiptap/core@^2.6.4".
warning "workspace-aggregator-b93b4877-aafa-4987-aa35-37e8f10a9dcc > builder-ui > frappe-ui > @tiptap/extension-table-row@2.6.4" has unmet peer dependency "@tiptap/core@^2.6.4".
warning "workspace-aggregator-b93b4877-aafa-4987-aa35-37e8f10a9dcc > builder-ui > frappe-ui > @tiptap/extension-text-align@2.6.4" has unmet peer dependency "@tiptap/core@^2.6.4".
warning "workspace-aggregator-b93b4877-aafa-4987-aa35-37e8f10a9dcc > builder-ui > frappe-ui > @tiptap/extension-typography@2.6.4" has unmet peer dependency "@tiptap/core@^2.6.4".
warning "workspace-aggregator-b93b4877-aafa-4987-aa35-37e8f10a9dcc > builder-ui > frappe-ui > @tiptap/suggestion@2.6.4" has unmet peer dependency "@tiptap/core@^2.6.4".
[4/4] Building fresh packages...
success Saved lockfile.
$ cd frontend && yarn install
yarn install v1.22.22
[1/4] Resolving packages...
success Already up-to-date.
Done in 0.41s.
Done in 54.52s.
$ bench build --app builder
✔ Application Assets Linked
yarn run v1.22.22
$ node esbuild --production --apps builder --run-build-command
File Size
DONE Total Build Time: 164.137ms
WARN Cannot connect to redis_cache to update assets_json
WARN Cannot connect to redis_cache to update assets_json
WARN Cannot connect to redis_cache to update assets_json
Running build command for builder
$ cd frontend && yarn build
$ vite build --base=/assets/builder/frontend/ && yarn copy-html-entry
vite v5.4.2 building for production...
✓ 24 modules transformed.
x Build failed in 743ms
error during build:
[vite:vue] [@vue/compiler-sfc] Failed to load TypeScript, which is required for resolving imported types. Please make sure "typescript" is installed as a project dependency.
/workspace/development/frappe-bench/apps/builder/node_modules/frappe-ui/src/components/Button.vue
57 | import type { ButtonProps } from './types/Button'
58 |
59 | const props = withDefaults(defineProps<ButtonProps>(), {
| ^^^^^^^^^^^
60 | theme: 'gray',
61 | size: 'sm',
file: /workspace/development/frappe-bench/apps/builder/node_modules/frappe-ui/src/components/Button.vue
at ScriptCompileContext.error (/workspace/development/frappe-bench/apps/builder/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:15698:11)
at importSourceToScope (/workspace/development/frappe-bench/apps/builder/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:18522:16)
at resolveTypeFromImport (/workspace/development/frappe-bench/apps/builder/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:18514:23)
at innerResolveTypeReference (/workspace/development/frappe-bench/apps/builder/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:18401:14)
at resolveTypeReference (/workspace/development/frappe-bench/apps/builder/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:18389:20)
at innerResolveTypeElements (/workspace/development/frappe-bench/apps/builder/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:17990:24)
at resolveTypeElements (/workspace/development/frappe-bench/apps/builder/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:17931:20)
at resolveRuntimePropsFromType (/workspace/development/frappe-bench/apps/builder/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:19556:20)
at extractRuntimeProps (/workspace/development/frappe-bench/apps/builder/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:19532:17)
at genRuntimeProps (/workspace/development/frappe-bench/apps/builder/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:19520:18)
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
Error: Command failed: yarn build
at checkExecSyncError (node:child_process:890:11)
at execSync (node:child_process:962:15)
at run_build_command_for_apps (/workspace/development/frappe-bench/apps/frappe/esbuild/esbuild.js:530:3)
at execute (/workspace/development/frappe-bench/apps/frappe/esbuild/esbuild.js:137:23)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
status: 1,
signal: null,
output: [ null, null, null ],
pid: 4694,
stdout: null,
stderr: null
}
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
:: Command 'yarn run production --apps builder --run-build-command' returned non-zero exit status 1. ::
Context:
File '/workspace/development/frappe-bench/apps/frappe/frappe/commands/__init__.py', line 97
92: )
93:
94: return_ = proc.wait()
95:
96: if return_ and raise_err:
97> raise subprocess.CalledProcessError(return_, command)
98:
99: return return_
100:
101:
102: def call_command(cmd, context):
Do you want to see the full traceback? [y/N]: y
Full traceback:
Traceback (most recent call last):
File "/workspace/development/frappe-bench/apps/frappe/frappe/utils/bench_helper.py", line 47, in invoke
return super().invoke(ctx)
^^^^^^^^^^^^^^^^^^^
File "/workspace/development/frappe-bench/env/lib/python3.11/site-packages/click/core.py", line 1688, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/workspace/development/frappe-bench/env/lib/python3.11/site-packages/click/core.py", line 1434, in invoke
return ctx.invoke(self.callback, **ctx.params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/workspace/development/frappe-bench/env/lib/python3.11/site-packages/click/core.py", line 783, in invoke
return __callback(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/workspace/development/frappe-bench/apps/frappe/frappe/commands/utils.py", line 88, in build
bundle(
File "/workspace/development/frappe-bench/apps/frappe/frappe/build.py", line 257, in bundle
frappe.commands.popen(command, cwd=frappe_app_path, env=get_node_env(), raise_err=True)
File "/workspace/development/frappe-bench/apps/frappe/frappe/commands/__init__.py", line 97, in popen
raise subprocess.CalledProcessError(return_, command)
subprocess.CalledProcessError: Command 'yarn run production --apps builder --run-build-command' returned non-zero exit status 1.
Command 'yarn run production --apps builder --run-build-command' returned non-zero exit status 1.
ERROR: bench build --app builder
subprocess.CalledProcessError: Command 'bench build --app builder' returned non-zero exit status 1.
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/home/frappe/.local/bin/bench", line 8, in <module>
sys.exit(cli())
^^^^^
File "/home/frappe/.bench/bench/cli.py", line 132, in cli
bench_command()
File "/home/frappe/.bench/bench/commands/make.py", line 181, in get_app
get_app(
File "/home/frappe/.bench/bench/app.py", line 777, in get_app
app.install(verbose=verbose, skip_assets=skip_assets, restart_bench=restart_bench)
File "/home/frappe/.bench/bench/utils/render.py", line 126, in wrapper_fn
return fn(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^
File "/home/frappe/.bench/bench/app.py", line 254, in install
install_app(
File "/home/frappe/.bench/bench/app.py", line 925, in install_app
build_assets(bench_path=bench_path, app=app, using_cached=using_cached)
File "/home/frappe/.bench/bench/utils/bench.py", line 380, in build_assets
exec_cmd(command, cwd=bench_path, env=env)
File "/home/frappe/.bench/bench/utils/__init__.py", line 178, in exec_cmd
raise CommandFailedError(cmd) from subprocess.CalledProcessError(return_code, cmd)
bench.exceptions.CommandFailedError: bench build --app builder
Workaround
Adding TypeScript as a development dependency resolves the issue:
yarn add typescript --dev
However, it is unclear if this step should be performed manually or if TypeScript should be added as a dependency in the application itself.
Environment
- Operating System: Ubuntu 20.04 (Docker container based on
frappe/bench
) - Frappe Version:
version-15
andversion-14
(last release)
Confirmed on Ubuntu 22.04 with a non-docker version , frappe 15.47.2 and builder develop with the latest commit being 8c46dda (latest known commit at 18-11--24, 07:14)
The commit related with this issue must have been pushed between this Friday noon and this Saturday morning based on my own monitoring (some of my auto updating benches began failing at this time)
Error disappeared on bench update --reset
after builder was removed from the related bench.
same happened to me with frappe crm
Same problem here for Frappe Builder on Frappe Cloud.
This happened due to recent changes in frappe-ui that requires typescript as peer dependency.
Fixed with: 3572416
Same problem here for Frappe Builder on Frappe Cloud.
@Altrix-One Are you on private bench & are you using main
branch?
Same problem here for Frappe Builder on Frappe Cloud.
@Altrix-One Are you on private bench & are you using
main
branch?
Private branch of Frappe Builder - Develop
This has been reported all over, CRM also seems to be impacted.