Dotenv没有获得价值作为字符串

时间:2019-01-26 20:08:14

标签: javascript vue.js webpack dotenv

我已经安装了dotenv来设置用于开发和生产的环境变量,其中之一是ROOT_API,我的env文件如下所示

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

我在axios中设置了api请求配置,并遵循了dotenv存储库中的步骤

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转换为字符串或记录该值的类型,但由于该值在js中看起来像纯文本,因此出现错误SyntaxError: missing ) after argument list
  • 使用类似${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 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,这就是我所做的:

如果您使用的是webpack.DefinePlugin(),请改用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 || {})),
  ]
]

答案 1 :(得分:1)

有点晚...但是遵循我的解决方法。

      ID Invoice_Date  Payment_Term Payment_Date    Due_Date  Delay  Difference_Date  Max
0  27459   2020-06-26             7   2020-07-05  2020-07-03      2                0  NaN
1  27459   2020-06-29             8   2020-07-05  2020-07-07     -2                3  2.0
2  27459   2020-06-30             3   2020-07-03  2020-07-03      0                1  2.0
3  27459   2020-07-14             6   2020-07-21  2020-07-20      1               14  2.0
4  27459   2020-07-25             4   2020-07-31  2020-07-29      2               11  2.0
5  27459   2020-07-30             7   2020-08-15  2020-08-06      9                5  2.0
6  27459   2020-08-02             8   2020-08-22  2020-08-10     12                3  9.0
7  48002   2020-05-13             5   2020-06-16  2020-05-18     29                0  NaN
8  48002   2020-06-20             3   2020-06-23  2020-06-23      0               38  NaN
9  48002   2020-06-28             6   2020-07-05  2020-07-04      1                8  0.0

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

答案 2 :(得分:0)

您的代码应该可以正常运行。我认为它没有问题,我只是在没有webpack的情况下对其进行了验证。

如果

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

得到的翻译如下:

baseURL: http://localhost/project/public/ + 'api/',表示您的翻译有问题。您应该在此处检查问题(或使用有关您的Webpack配置和用法的更多信息来更新问题)

答案 3 :(得分:0)

将此软件包安装为开发依赖项(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