2

我已经安装了 dotenv 来为开发和生产设置环境变量,其中一个变量是ROOT_API,我的 env 文件看起来像这样

NODE_ENV=dev
ROOT_API=http://localhost/project/public/
PORT=8000

我在 axios 中设置了我的 api 请求配置,并像这样按照 dotenv repo 中的步骤进行操作

require('dotenv').config({path: `${__dirname}/../.env`})
//I asume this is right as the value get returned 
//but there does not say that i have to configure anything else
export const http = axios.create({
  baseURL: process.env.ROOT_API + 'api/',
  headers: {
    'Content-Type': 'application/json',
    'Accept': 'application/json',
    'Authorization': tokenType + ' ' + token
  }
})

我希望process.env.ROOT_API将值作为字符串返回,但是在控制台中,Uncaught SyntaxError: Unexpected token :当我看到问题出在哪里时,我会看到错误,值显示为

var http = __WEBPACK_IMPORTED_MODULE_5_axios___default.a.create({
  baseURL: http://localhost/project/public/ + 'api/',
  headers: {
    'Content-Type': 'application/json',
    'Accept': 'application/json',
    'Authorization': tokenType + ' ' + token
  }
});

我努力了

  • .env在文件中使用不同的引号
  • 将值转换process.env.ROOT_API为字符串或记录值的类型,但SyntaxError: missing ) after argument list由于值看起来像 js 中的纯文本,所以会出错。
  • 使用这样的模板文字${process.env.ROOT_API};显示在console > sources '' + http://localhost/project/public/; //我不知道如何显示`引号它显示它像代码对不起。

我做了一个console.log看看process.env控制台中有什么,这就是它所显示的

   ...
   PWD: 'C:/xampp/htdocs/project',
   ROOT_API: 'http://localhost/erp-api/public/',
   SESSIONNAME: 'Console',
   ...

我怎样才能解决这个问题?我不明白为什么它不能将值作为字符串获取?

4

4 回答 4

3

我有同样的问题,这就是我所做的:

如果您使用的是webpack.DefinePlugin()use webpack.EnvironmentPlugin(),则使用以下方式获取dotenv.parsed密钥Object.keys()

// webpack.config.js

const webpack = require('webpack')
const dotenv = require('dotenv').config()

module.exports = {

//...other configs

  plugins: [
     new webpack.EnvironmentPlugin(Object.keys(dotenv.parsed || {})),
  ]
]
于 2020-09-09T14:01:50.233 回答
2

有点晚了......但遵循我的解决方案。

  ...
  plugins: [
    new webpack.DefinePlugin({
    'process.env': JSON.stringify(dotenv.parsed)
  })

将所有内容转换为字符串,不再出现随机错误;)

于 2020-11-19T05:11:35.477 回答
2

您的代码应该运行良好。我认为它没有问题,我只是在没有 webpack 的情况下验证了它。

如果

baseURL: process.env.ROOT_API + 'api/'

被翻译成:

baseURL: http://localhost/project/public/ + 'api/',这意味着您的转译存在问题。您应该在那里检查问题(或使用有关您的 webpack 配置和使用的更多信息更新问题)

于 2019-01-26T21:53:29.833 回答
1

将此包安装为开发依赖项(https://www.npmjs.com/package/dotenv-webpack):

npm install  --dev  dotenv-webpack

或者

yarn add -D dotenv-webpack

之后,只需将此代码添加到您的 webpack 文件中:

     const Dotenv = require('dotenv-webpack');

        module.exports = {
          ...
          plugins: [
            new Dotenv()
          ]
          ...
        };

参考链接:https ://www.npmjs.com/package/dotenv-webpack

于 2019-05-28T03:29:24.853 回答