当前 SvelteKit 项目中的 process.env.NODE_ENV 突然未定义

Cor*_*rrl 4 node.js vite sveltekit

svelte.config.js我在里面用的是这个

const dev = process.env.NODE_ENV === 'development';
Run Code Online (Sandbox Code Playgroud)

@sveltejs/kit@1.0.0-next.350 有条件地设置一个基本路径,该路径在具有和 的项目中运行良好*.357

现在安装最新的 SvelteKit 版本后,@sveltejs/kit@1.0.0-next.386只会导致undefined

我注意到的差异是新项目列为"vite": "^3.0.0"devDependency 并且脚本从更改"dev": "svelte-kit dev","dev": "vite dev"

@sveltejs/kit@1.0.0-next.366更新:带有, vite@2.9.14, -的项目也是如此,"dev": "vite dev"所以切换是在 vite 3.0 之前

浏览我找到的 vite 文档import.meta.env,但这也在undefined里面svelte.config.js

从 Node v16 切换到 17 也没有什么区别

发生了什么变化以及我现在如何区分devbuild模式?

Pao*_*olo 5

您所描述的行为是在100-next384中引入的

[破坏]从 $app/env 中删除模式、产品和服务器 (#5602)

相关的讨论

尊重 --mode,并从 $app/env 中删除服务器、产品和模式

我认为你应该使用Vite 功能来配置 dev VS 生产/构建模式。

更新

考虑到更好的情况,解决问题的一种方法是为NODE_DEV环境变量设置一个值,例如(Linux/Mac):

export NODE_ENV=development && npm run dev
Run Code Online (Sandbox Code Playgroud)

还有其他方法可以做到这一点,但至少对于开发来说它应该可以做到这一点。