使用reflex的序章:安装cargo、fnm和bun
安装好reflex后,需要安装好cargo和fnm
安装cargo
apt install cargo
设置加速镜像
在.cargo/config文件里写入:
[source.crates-io]
replace-with = 'mirror'
[source.mirror]
registry = "https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git"
安装margo的新版本
sudo npm install major
安装fnm
cargo install fnm
设置npm的加速镜像
npm config set registry https://registry.npm.taobao.org/
使用镜像源可以加快npm包的下载和安装速度,尤其是在国内网络环境下。你可以通过设置npm的配置来切换镜像源。例如,要使用淘宝源,可以执行以下命令:
npm config set registry https://registry.npm.taobao.org/
或者要使用cnpm源,可以执行以下命令:
npm config set registry http://r.cnpmjs.org/
切换镜像源后,再使用npm安装包时,npm将会从对应的镜像源下载和安装包。
npm update
有些慢,感觉卡住了
发现Node版本不一致,报错信息里显示要用18.17,手工下载安装
# installs fnm (Fast Node Manager)
curl -fsSL https://fnm.vercel.app/install | bash
# activate fnm
source ~/.bashrc
# download and install Node.js
fnm use --install-if-missing 18
# verifies the right Node.js version is in the environment
node -v # should print `v18.20.4`
# verifies the right npm version is in the environment
npm -v # should print `10.7.0`
reflex需要的是18.17 ,这个下载不下来。手工下载install文件,执行后github下载fnm失败。
升级nodejs
sudo apt upgrade nodejs
npm 设置镜像
(base) skywalk@ub:~/app1$ npm config set registry https://registry.npmmirror.com
(base) skywalk@ub:~/app1$ npm config get registry
https://registry.npmmirror.com
(base) skywalk@ub:~/app1$ npm update
up to date in 11s
23 packages are looking for funding
run `npm fund` for details
安装rustup
安装rustup
sudo snap install rustup --classic
然后升级到nightly版本
rustup install nightly
rustup default nightly
升级后还是无法安装bun
手工安装bun
curl -fsSL https://bun.sh/install | bash
手工安装bun 失败,主要是github有问题。
尝试手工npm 安装bun
sudo npm install -g bun
安装成了。
结论:
因为特殊的国情,涉及到github自动下载安装的部分存在很大的坑,导致cargo 安装bun会失败,进而导致reflex init会失败。
解决的方法:
cargo升级到最新,npm最新,rustup 设为nightly
rustup install nightly
rustup default nightly
若cargo安装bun失败,curl安装bun失败,可以尝试使用npm安装bun 。
sudo npm install -g bun
调试
报错error: Can't download the requested binary: error sending request
for url
⠦ Installing node Installing Node v18.17.0 (x64)
Installing node failed with exit code 1
Installing Node v18.17.0 (x64)
error: Can't download the requested binary: error sending request
for url
(https://nodejs.org/dist/v18.17.0/node-v18.17.0-linux-x64.tar.xz):
operation timed out
Run with --loglevel debug for the full log.
初始化的时候报错。。。
初始化报错
reflex init
──────────────────────── Initializing work ────────────────────────
Installing node failed with exit code 1
Installing Node v18.17.0 (x64)
error: Can't download the requested binary: error sending request
for url
(https://nodejs.org/dist/v18.17.0/node-v18.17.0-linux-x64.tar.xz):
operation timed out
Run with --loglevel debug for the full log.
报错error: Failed to download bun from
error: Failed to download bun from
"https://github.com/oven-sh/bun/releases/download/bun-v1.1.10/bun-l
inux-x64-baseline.zip"
Run with --loglevel debug for the full log.
手工下载bun
npm install bun
报错变成
报错:Installing https://bun.sh/install failed with exit code 1
#!/usr/bin/env bash
set -euo pipefail
platform=$(uname -ms)
if [[ ${OS:-} = Windows_NT ]]; then
if [[ $platform != MINGW64* ]]; then
powershell -c "irm bun.sh/install.ps1|iex"
exit $?
fi
fi
# Reset
Color_Off=''
# Regular Colors
Red=''
Green=''
Dim='' # White
# Bold
Bold_White=''
Bold_Green=''
if [[ -t 1 ]]; then
# Reset
Color_Off='\033[0m' # Text Reset
# Regular Colors
Red='\033[0;31m' # Red
Green='\033[0;32m' # Green
Dim='\033[0;2m' # White
# Bold
Bold_Green='\033[1;32m' # Bold Green
Bold_White='\033[1m' # Bold White
fi
error() {
echo -e "${Red}error${Color_Off}:" "$@" >&2
exit 1
}
info() {
echo -e "${Dim}$@ ${Color_Off}"
}
info_bold() {
echo -e "${Bold_White}$@ ${Color_Off}"
}
success() {
echo -e "${Green}$@ ${Color_Off}"
}
command -v unzip >/dev/null ||
error 'unzip is required to install bun'
if [[ $# -gt 2 ]]; then
error 'Too many arguments, only 2 are allowed. The first can be a specific tag of bun to install. (e.g. "bun-v0.1.4") The second can be a build variant of bun to install. (e.g. "debug-info")'
fi
case $platform in
'Darwin x86_64')
target=darwin-x64
;;
'Darwin arm64')
target=darwin-aarch64
;;
'Linux aarch64' | 'Linux arm64')
target=linux-aarch64
;;
'MINGW64'*)
target=windows-x64
;;
'Linux x86_64' | *)
target=linux-x64
;;
esac
if [[ $target = darwin-x64 ]]; then
# Is this process running in Rosetta?
# redirect stderr to devnull to avoid error message when not running in Rosetta
if [[ $(sysctl -n sysctl.proc_translated 2>/dev/null) = 1 ]]; then
target=darwin-aarch64
info "Your shell is running in Rosetta 2. Downloading bun for $target instead"
fi
fi
GITHUB=${GITHUB-"https://github.com"}
github_repo="$GITHUB/oven-sh/bun"
if [[ $target = darwin-x64 ]]; then
# If AVX2 isn't supported, use the -baseline build
if [[ $(sysctl -a | grep machdep.cpu | grep AVX2) == '' ]]; then
target=darwin-x64-baseline
fi
fi
if [[ $target = linux-x64 ]]; then
# If AVX2 isn't supported, use the -baseline build
if [[ $(cat /proc/cpuinfo | grep avx2) = '' ]]; then
target=linux-x64-baseline
fi
fi
exe_name=bun
if [[ $# = 2 && $2 = debug-info ]]; then
target=$target-profile
exe_name=bun-profile
info "You requested a debug build of bun. More information will be shown if a crash occurs."
fi
if [[ $# = 0 ]]; then
bun_uri=$github_repo/releases/latest/download/bun-$target.zip
else
bun_uri=$github_repo/releases/download/$1/bun-$target.zip
fi
install_env=BUN_INSTALL
bin_env=\$$install_env/bin
install_dir=${!install_env:-$HOME/.bun}
bin_dir=$install_dir/bin
exe=$bin_dir/bun
if [[ ! -d $bin_dir ]]; then
mkdir -p "$bin_dir" ||
error "Failed to create install directory \"$bin_dir\""
fi
curl --fail --location --progress-bar --output "$exe.zip" "$bun_uri" ||
error "Failed to download bun from \"$bun_uri\""
unzip -oqd "$bin_dir" "$exe.zip" ||
error 'Failed to extract bun'
mv "$bin_dir/bun-$target/$exe_name" "$exe" ||
error 'Failed to move extracted bun to destination'
chmod +x "$exe" ||
error 'Failed to set permissions on bun executable'
rm -r "$bin_dir/bun-$target" "$exe.zip"
tildify() {
if [[ $1 = $HOME/* ]]; then
local replacement=\~/
echo "${1/$HOME\//$replacement}"
else
echo "$1"
fi
}
success "bun was installed successfully to $Bold_Green$(tildify "$exe")"
if command -v bun >/dev/null; then
# Install completions, but we don't care if it fails
IS_BUN_AUTO_UPDATE=true $exe completions &>/dev/null || :
echo "Run 'bun --help' to get started"
exit
fi
refresh_command=''
tilde_bin_dir=$(tildify "$bin_dir")
quoted_install_dir=\"${install_dir//\"/\\\"}\"
if [[ $quoted_install_dir = \"$HOME/* ]]; then
quoted_install_dir=${quoted_install_dir/$HOME\//\$HOME/}
fi
echo
case $(basename "$SHELL") in
fish)
# Install completions, but we don't care if it fails
IS_BUN_AUTO_UPDATE=true SHELL=fish $exe completions &>/dev/null || :
commands=(
"set --export $install_env $quoted_install_dir"
"set --export PATH $bin_env \$PATH"
)
fish_config=$HOME/.config/fish/config.fish
tilde_fish_config=$(tildify "$fish_config")
if [[ -w $fish_config ]]; then
{
echo -e '\n# bun'
for command in "${commands[@]}"; do
echo "$command"
done
} >>"$fish_config"
info "Added \"$tilde_bin_dir\" to \$PATH in \"$tilde_fish_config\""
refresh_command="source $tilde_fish_config"
else
echo "Manually add the directory to $tilde_fish_config (or similar):"
for command in "${commands[@]}"; do
info_bold " $command"
done
fi
;;
zsh)
# Install completions, but we don't care if it fails
IS_BUN_AUTO_UPDATE=true SHELL=zsh $exe completions &>/dev/null || :
commands=(
"export $install_env=$quoted_install_dir"
"export PATH=\"$bin_env:\$PATH\""
)
zsh_config=$HOME/.zshrc
tilde_zsh_config=$(tildify "$zsh_config")
if [[ -w $zsh_config ]]; then
{
echo -e '\n# bun'
for command in "${commands[@]}"; do
echo "$command"
done
} >>"$zsh_config"
info "Added \"$tilde_bin_dir\" to \$PATH in \"$tilde_zsh_config\""
refresh_command="exec $SHELL"
else
echo "Manually add the directory to $tilde_zsh_config (or similar):"
for command in "${commands[@]}"; do
info_bold " $command"
done
fi
;;
bash)
# Install completions, but we don't care if it fails
IS_BUN_AUTO_UPDATE=true SHELL=bash $exe completions &>/dev/null || :
commands=(
"export $install_env=$quoted_install_dir"
"export PATH=$bin_env:\$PATH"
)
bash_configs=(
"$HOME/.bashrc"
"$HOME/.bash_profile"
)
if [[ ${XDG_CONFIG_HOME:-} ]]; then
bash_configs+=(
"$XDG_CONFIG_HOME/.bash_profile"
"$XDG_CONFIG_HOME/.bashrc"
"$XDG_CONFIG_HOME/bash_profile"
"$XDG_CONFIG_HOME/bashrc"
)
fi
set_manually=true
for bash_config in "${bash_configs[@]}"; do
tilde_bash_config=$(tildify "$bash_config")
if [[ -w $bash_config ]]; then
{
echo -e '\n# bun'
for command in "${commands[@]}"; do
echo "$command"
done
} >>"$bash_config"
info "Added \"$tilde_bin_dir\" to \$PATH in \"$tilde_bash_config\""
refresh_command="source $bash_config"
set_manually=false
break
fi
done
if [[ $set_manually = true ]]; then
echo "Manually add the directory to $tilde_bash_config (or similar):"
for command in "${commands[@]}"; do
info_bold " $command"
done
fi
;;
*)
echo 'Manually add the directory to ~/.bashrc (or similar):'
info_bold " export $install_env=$quoted_install_dir"
info_bold " export PATH=\"$bin_env:\$PATH\""
;;
esac
echo
info "To get started, run:"
echo
if [[ $refresh_command ]]; then
info_bold " $refresh_command"
fi
info_bold " bun --help"
手工安装nodejs 18版本报错
sh nodeinstall
nodeinstall: 24: [[: not found
Checking dependencies for the installation script...
Checking availability of curl... OK!
Checking availability of unzip... OK!
Downloading https://github.com/Schniz/fnm/releases/latest/download/fnm-linux.zip...
curl: (56) OpenSSL SSL_read: error:0A000126:SSL routines::unexpected eof while reading, errno 0
Download failed. Check that the release/filename are correct.
应该是版本低了
还会用cargo install fnm试试
init时报错error: Failed to download bun from
59.5%curl: (92) HTTP/2 stream 0 was not closed cleanly:
PROTOCOL_ERROR (err 1)
error: Failed to download bun from
"https://github.com/oven-sh/bun/releases/download/bun-v1.1.10/bun-l
inux-x64-baseline.zip"
使用cargo install bun试试
安装bun报错error: failed to compile `bun v0.1.0`,
warning: build failed, waiting for other jobs to finish...
error: failed to compile `bun v0.1.0`, intermediate artifacts can be found at `/tmp/cargo-installCMSJBe`.
To reuse those artifacts with a future compilation, set the environment variable `CARGO_TARGET_DIR` to that path.
Error: Pear requires a 'dev' or 'nightly' version of rustc.
安装rustc rustc-1.76 试试
不行,
安装rust-all试试
sudo apt install rust-all
然后安装rustup
sudo snap install rustup --classic
然后升级到nightly版本
rustup install nightly
然后再来安装bun
还是一样的报错
手工安装bun
curl -fsSL https://bun.sh/install | bash
安装失败,主要是github有问题。
手工npm 安装bun
sudo npm install -g bun
安装margo的新版本
sudo npm install major
安装之后,再安装bun,还是一样失败。
实在搞不定,放弃。
后来一通整,bun这边竟然过去了。也就是执行reflex init 通过了!
reflex init
[06:11:11] Initializing the web directory. console.py:104
Get started with a template:
(0) blank (https://blank-template.reflex.run) - A minimal template
(1) dashboard (https://dashboard-new.reflex.run/) - A dashboard
with tables and graphs
(2) sales (https://sales-new.reflex.run/) - An app to manage sales
and customers
(3) ai_image_gen (https://ai-image-gen.reflex.run/) - An app to
generate images using AI
(4) ci_template (https://cijob.reflex.run/) - A template for
continuous integration
(5) api_admin_panel (https://api-admin-panel.reflex.run/) - An
admin panel for an api.
(6) nba (https://nba-new.reflex.run/) - A data visualization app
for NBA data.
(7) customer_data_app (https://customer-data-app.reflex.run/) - An
app to manage customer data.
Which template would you like to use? (0): [06:11:24] Initializing the app directory. console.py:104
Success: Initialized app1