vue2项目 public文件夹中的js 获取不到process.env
时间: 2023-05-17 20:02:47 浏览: 155
这可能是因为您没有在项目中正确配置环境变量。您可以尝试在项目的根目录下创建一个名为.env的文件,并在其中设置您需要的环境变量,例如:
```
NODE_ENV=production
API_URL=http://example.com/api
```
然后,在您的Vue组件中,您可以使用process.env来访问这些环境变量,例如:
```
const apiUrl = process.env.API_URL
```
如果您仍然无法获取process.env,请确保您的webpack配置正确,并且您正在使用正确的插件来处理环境变量。
相关问题
export default ({ command, mode }) => { const NODE_ENV = process.env.NODE_ENV || 'development' const envFiles = [ .env.${NODE_ENV} ] for (const file of envFiles) { const envConfig = dotenv.parse(fs.readFileSync(file)) for (const k in envConfig) { process.env[k] = envConfig[k] } } viteLogo(process.env) const timestamp = Date.parse(new Date()) const optimizeDeps = {} const alias = { '@': path.resolve(__dirname, './src'), 'vue$': 'vue/dist/vue.runtime.esm-bundler.js', } const esbuild = {} const config = { base: './', // index.html文件所在位置 root: './', // js导入的资源路径,src resolve: { alias, }, define: { 'process.env': {} }, server: { // 如果使用docker-compose开发模式,设置为false open: true, port: process.env.VITE_CLI_PORT, proxy: { // 把key的路径代理到target位置 // detail: https://cli.vuejs.org/config/#devserver-proxy [process.env.VITE_BASE_API]: { // 需要代理的路径 例如 '/api' target: `${process.env.VITE_BASE_PATH}/`, // 代理到 目标路径 changeOrigin: true, rewrite: path => path.replace(new RegExp('^' + process.env.VITE_BASE_API), ''), }, [process.env.VITE_BASE_EXPORT_API]: { // 需要代理的路径 例如 '/api' target: `${process.env.VITE_BASE_REPORTAPI}/`, // 代理到 目标路径 changeOrigin: true, rewrite: path => path.replace(new RegExp('^' + process.env.VITE_BASE_EXPORT_API), ''), }, }, }, build: { target: 'es2017', minify: 'terser', // 是否进行压缩,boolean | 'terser' | 'esbuild',默认使用terser manifest: false, // 是否产出manifest.json sourcemap: false, // 是否产出sourcemap.json outDir: 'dist', // 产出目录 // rollupOptions, }, 使用vite部署时,请帮我修改以上代码,当build打包时,前端页面url新增VITE_PUBLIC_PATH= '/devOnlineStatus/'前缀
export default ({
command,
mode
}) => {
const NODE_ENV = process.env.NODE_ENV || 'development'
const envFiles = [
`.env.${NODE_ENV}`
]
for (const file of envFiles) {
const envConfig = dotenv.parse(fs.readFileSync(file))
for (const k in envConfig) {
process.env[k] = envConfig[k]
}
}
viteLogo(process.env)
const timestamp = Date.parse(new Date())
const optimizeDeps = {}
const alias = {
'@': path.resolve(__dirname, './src'),
'vue$': 'vue/dist/vue.runtime.esm-bundler.js',
}
const esbuild = {}
const config = {
base: './', // index.html文件所在位置
root: './', // js导入的资源路径,src
resolve: {
alias,
},
define: {
'process.env': {}
},
server: {
// 如果使用docker-compose开发模式,设置为false
open: true,
port: process.env.VITE_CLI_PORT,
proxy: {
// 把key的路径代理到target位置
// detail: https://cli.vuejs.org/config/#devserver-proxy
[process.env.VITE_BASE_API]: { // 需要代理的路径 例如 '/api'
target: `${process.env.VITE_BASE_PATH}/`, // 代理到 目标路径
changeOrigin: true,
rewrite: path => path.replace(new RegExp('^' + process.env.VITE_BASE_API), ''),
},
[process.env.VITE_BASE_EXPORT_API]: { // 需要代理的路径 例如 '/api'
target: `${process.env.VITE_BASE_REPORTAPI}/`, // 代理到 目标路径
changeOrigin: true,
rewrite: path => path.replace(new RegExp('^' + process.env.VITE_BASE_EXPORT_API), ''),
},
},
},
build: {
target: 'es2017',
minify: 'terser', // 是否进行压缩,boolean | 'terser' | 'esbuild',默认使用terser
manifest: false, // 是否产出manifest.json
sourcemap: false, // 是否产出sourcemap.json
outDir: 'dist', // 产出目录
// rollupOptions,
},
}
// Add VITE_PUBLIC_PATH to the define object when building
if (command === 'build') {
config.define['process.env.VITE_PUBLIC_PATH'] = "'/devOnlineStatus/'"
}
return config
}
vue3怎么添加publicPath: process.env.NODE_ENV === 'production' ? '/app/' : '/'
在Vue 3项目中,`publicPath`是一个配置项,用于设置静态资源的引用路径。当你的应用部署到生产环境(通常通过Node.js服务器),`NODE_ENV`会被设为`'production'`,此时`process.env.NODE_ENV`会返回这个值。你可以在代码中利用条件语句判断环境,然后设置不同的`publicPath`。
例如,在`.env.development`和`.env.production`这两个环境变量文件中,你可以分别设置:
```shell
// .env.development
publicPath = '/'
```
```shell
// .env.production
publicPath = '/app/'
```
而在主的配置文件(如`main.js`或`vite.config.ts`)中,你可以读取环境变量动态设置`publicPath`,示例如下:
```javascript
import { createApp } from 'vue'
import App from './App.vue'
const isProduction = process.env.NODE_ENV === 'production'
const app = createApp(App)
if (isProduction) {
// 生产环境
app.config.publicPath = '/app/'
} else {
// 开发环境
app.config.publicPath = '/'
}
app.mount('#app')
```
这样,根据当前运行的环境,`publicPath`就会自动调整为相应的路径。
阅读全文