Open outman opened 1 month ago
这个defs是在哪个文件中定义的? 是vue.config.js中吗?
这个defs是在哪个文件中定义的? 是vue.config.js中吗?
@hiyuki 是的。
mpx: {
plugin: {
// mode: 'web',
srcMode: 'wx',
hackResolveBuildDependencies: ({ files, resolveDependencies }) => {
const path = require('path')
const packageJSONPath = path.resolve('package.json')
if (files.has(packageJSONPath)) files.delete(packageJSONPath)
if (resolveDependencies.files.has(packageJSONPath)) {
resolveDependencies.files.delete(packageJSONPath)
}
},
defs: {
__mpx_domain__: process.env.DOMAIN
}
},
loader: {}
}
DOMAIN 是如何声明的?
DOMAIN 是如何声明的?
@mater1996 在命令行 export DOMAIN=xxxx
DOMAIN 是如何声明的?
@mater1996 在命令行 export DOMAIN=xxxx
给提供一个仓库吧,我本地没有复现这个问题
DOMAIN 是如何声明的?
@mater1996 在命令行 export DOMAIN=xxxx
给提供一个仓库吧,我本地没有复现这个问题
@mater1996 https://github.com/outman/modern-art
DOMAIN 是如何声明的?
@mater1996 在命令行 export DOMAIN=xxxx
给提供一个仓库吧,我本地没有复现这个问题
@mater1996 https://github.com/outman/modern-art 复现步骤: 去掉 vue.config.json mode: 'web' 的注释
- 在 命令行 export DOMAIN=https://okai.dev
- pnpm build:cross
- 再次在命令行 export DOMAIN=https://example.com
- pnpm build:cross
之后在 dist/web 目录下,搜索文件内这两个域名,都会出现。而且将 dist/web 部署以后就发现一部分请求了第 1 步的域名,一部分请求了第 2 步的域名。
这块跟vue.config.js
这段配置有关系
hackResolveBuildDependencies: ({ files, resolveDependencies }) => {
const path = require('path')
const packageJSONPath = path.resolve('package.json')
if (files.has(packageJSONPath)) files.delete(packageJSONPath)
if (resolveDependencies.files.has(packageJSONPath)) {
resolveDependencies.files.delete(packageJSONPath)
}
},
package.json
变动依旧会采用缓存的内容,所以环境变量需要写到vue.config.js
里,这样环境变量变动就可以使缓存失效。
或者一定要写到package.json
里,那么需要修改webpackConfig
的name
根据你的环境变量来变化,隔离不同的环境缓存。
例如
configureWebpack(config) {
return {
name: process.env.DOMAIN
}
}
问题描述
请用简洁的语言描述你遇到的bug,至少包括以下部分,如提供截图请尽量完整:
问题触发的条件 进行自定义 defs 变量
期望的表现 __mpx_domain__ 值在使用的时候是期望的值。
实际的表现 DOMAIN 环境变量一开始是 A,再改为 B 以后,build 结果生成的文件中就会即有 A 又有 B。
环境信息描述
至少包含以下部分:
最简复现demo
view 代码部分
script 代码部分
删除 .cache 和 dist 以后重新 build 就好了。