环境
Electron
TypeScript
Vue
问题
打包后运行exe,报错
跟踪
const defaultPath = path.join(homeDir, process.env.npm_package_name!, ‘db.sqlite3’)
分析
process.env.npm_package_name的本质
process.env.npm_package_*系列环境变量,是npm/pnpm/yarn在通过 CLI 运行 package.json 脚本(如npm run dev或npm run build)时,由 npm CLI 动态注入到当前 Node.js 进程中的环境上下文。
- 在开发环境 / 构建阶段:你执行
npm run dev或构建命令,npm 进程启动,并将 package.json 里的"name": "auto-tile"自动注入为环境变量process.env.npm_package_name = "auto-tile"。 - 在打包后的生产环境:用户直接在 Windows 上双击
auto-tile.exe启动应用,此时没有经过 npm CLI 启动,Electron 进程是由操作系统直接调起的,根本不存在process.env.npm_package_name这个环境变量(它的值为undefined)。
生产环境不能使用process.env.npm_package_name
解决
改成固定字符串