如何调用环境变量?

时间:2018-12-28 21:48:33

标签: javascript node.js

在.env文件中,我设置了一些变量 //文件.env

NAME="Darwin"

但是当您在js文件中调用它时,我得到了一个未定义的值 //文件index.js

console.log(process.env.NAME) 

以及在执行节点index.js时

undefined

您能解释一下为什么会发生吗,谢谢。

3 个答案:

答案 0 :(得分:2)

如果包含dotenv依赖关系,则不会出现此问题 https://www.npmjs.com/package/dotenv

然后只需在脚本顶部添加

// the main html file:
var myWorker = new Worker('datapointscollection.js');
  myWorker.onmessage = function(e) {
      document.getElementById('loadingStatus').innerHTML = count + " elements from " + all + "are ready.";
      if (count == all) {
        myWorker.terminate();
        myWorker = undefined;
      }
  };

   myWorker.postMessage([geocodingParams]);

// the worker js file:
self.importScripts("http://js.api.here.com/v3/3.0/mapsjs-core.js");
self.importScripts("http://js.api.here.com/v3/3.0/mapsjs-service.js");
self.importScripts("http://js.api.here.com/v3/3.0/mapsjs-ui.js");
self.importScripts("http://js.api.here.com/v3/3.0/mapsjs-mapevents.js");
self.addEventListener(
'message', 
function(e) {
  var count = 0;
  var all = 0;

  // Initialize the platform object:
  var platform = new H.service.Platform({
  'app_id': 'myappID',
  'app_code': 'myappCODE'
  });

  var geocoder = platform.getGeocodingService();

  var onResult = function(result) {};

  var findLocations = function(geocodingParams) {
    var i=0;
    all = geocodingParams.length;
    for (i=0; i<geocodingParams.length; i++) {
      geocoder.geocode(
        geocodingParams[i], 
        onResult, 
        function(e){
            alert(e);
        } );
      count = i;
      self.postMessage(count, all);
    }
  };

  findLocations(e.data[0]);
}, 
false);

(如果您通过babel / createreactapp等获得了es6)

import dotenv from 'dotenv';
dotenv.config();

答案 1 :(得分:0)

在创建flex文件时,该文件与其他js或文本文件一样,要使用它,我们需要使用.env npm软件包。

  

引用:dotenv

我们需要在初始节点项目文件的顶部使用它。

  

https://www.npmjs.com/package/dotenv

ES6 / Type脚本的语法(带有babel转换)

index.js

import dotenv from 'dotenv';
dotenv.config();

ES5节点js环境的语法

dotenv.config({path: `<path of .evn file>`});

require('dotenv').config();

默认情况下,它是从项目工作目录中获取.env的,但是如果您创建的.env文件的名称与您指定路径的名称不同。

之后,您可以在代码中的任何位置控制台环境变量。

答案 2 :(得分:0)

导入dotenv npm模块。

@Component
public class UserDetailsContextMapper extends LdapUserDetailsMapper {
    @Override
    public UserDetails mapUserFromContext(DirContextOperations ctx, String username, Collection<? extends GrantedAuthority> authorities) {
    // Get authorityList from current context from DB

        // Map the roles

        for (MyRole role : authorityList) {
            List<GrantedAuthority> newAuthorities = new ArrayList<>();
            newAuthorities.add(createRoleAuthority(role.getRoleName()));

            List<Privilege> privileges = new ArrayList<>(role.getPrivileges());
            for (Privilege privilege : privileges) {
                newAuthorities.add(createPrivilegeAuthority(privilege.getPrivilegeName()));
            }

            for (GrantedAuthority authority : newAuthorities) {
                essence.addAuthority(authority);
            }
        }

    // DO other stuff

        return essence.createUserDetails();
    }

    protected GrantedAuthority createRoleAuthority(String role) {
        return createAuthority(role);
    }

    protected GrantedAuthority createPrivilegeAuthority(String privilege) {
        privilege = privilege.toUpperCase();
        return new SimpleGrantedAuthority(privilege);
    }
}