我对node.js相当新,并且有一个程序,我必须设置一个环境变量才能运行(使用高级库,我的bash命令是:sudo NOBLE_HCI_DEVICE_ID=x node program.js,告诉我的代码哪个蓝牙适配器 - HCI设备 - 使用).
这背后的原因是我有许多模块,每个模块都需要自己的蓝牙适配器,我希望在我的代码中指定每个模块应该使用哪个适配器.
我发现很多文章告诉我如何在我的代码中使用环境变量并通过命令行(process.env.VARIABLE_NAME)设置它们,但没有告诉我如何在node.js中设置它们.
是否可以在我的node.js代码中设置环境变量?
我正在尝试使用PowerShell将环境变量传递给Node.js:
C:\Users\everton\my-project> $env:MY_VAR = 8000 node index.js
Run Code Online (Sandbox Code Playgroud)
但是我在PowerShell中遇到错误:
令牌'节点'意外表达或声明
我是Node.JS的新手.我发现很少有文章说我们可以使用.env文件来设置process.env变量,例如,
PORT = 8081
Run Code Online (Sandbox Code Playgroud)
但是当我在我的节点中运行程序时,它仍然是8080 PORT(默认情况下).问题是如何在没有任何其他第三方模块帮助的情况下在Node中设置env变量?(我发现很少有第三方软件包来管理env配置,但是......它很混乱,不同的软件包可能有不同的规则和更复杂的用例;我想从明确的方式开始纯粹研究nodejs)
更新
我已经在StackOverFlow上阅读了Node Environment Setting帖子,但它们是使用第三方软件包引用的,它们都没有说明详细步骤.(无论是Windows系统环境,还是Linux环境变量......但是如何将设置放入我的项目文件夹?!)
尝试通过从package.json上的此脚本列表运行build命令来构建angular-webpack应用程序时:
"scripts": {
"test": "NODE_ENV=test karma start",
"build": "if exist dist rd /s /q dist && mkdir dist && set NODE_ENV=production && webpack && cp app/index.html dist/index.html",
"start": "webpack-dev-server --content-base app"
},
Run Code Online (Sandbox Code Playgroud)
这是控制台上的结果:
$ npm run build
> webpack-ng-egg@1.0.0 build M:\Learning webpack\egghead.io - AngularJS - Angula
r and Webpack for Modular Applications\webpack-ng-egg
> if exist dist rd /s /q dist && mkdir dist && set NODE_ENV='production' && webp
ack && cp app/index.html dist/index.html
process.env.NODE_ENV : 'production'
process.env.NODE_ENV === 'production' ???? …Run Code Online (Sandbox Code Playgroud) 通常在开发时我会使用meteor run --settings settings.json. 这工作正常,可以Meteor.settings在控制台上查看浏览器中的设置。
我现在正在为生产而构建,使用meteor build,我已经查看了文档,并且settings在构建过程中无处可添加。
所以构建运行,我有我的.tar.gz文件,它被加载到生产中,然后我解压/压缩文件夹并运行启动脚本。
它进入程序,npm startpackage.json 部分如下所示(忽略停止脚本);
{
"name": "myapp",
"scripts": {
"start": "node main.js --settings settings.json",
"stop": "killall node"
}
}
Run Code Online (Sandbox Code Playgroud)
当我查看我的应用程序时,它没有收集这些设置。就好像捆绑时它不期望争论。我之前也尝试过永远使用,但我对此也不满意。
任何帮助将不胜感激,开始希望我从来没有打扰流星:)
我正在尝试在package.json中添加一个npm脚本,该脚本NODE_ENV在进行其他操作(如运行webpack)之前进行设置。但是,尽管语法似乎是正确的,NODE_ENV在Windows 10下运行时未设置。
测试脚本
"scripts": {
"test": "SET NODE_ENV=debug && echo %NODE_ENV%" }
Run Code Online (Sandbox Code Playgroud)
结果来自npm run test“生产”(NODE_ENV运行脚本之前已设置为“生产”)。应该是“调试”。
编辑
为了澄清我的问题:我无法在Windows 10下设置任何环境变量。我需要调用SET,因为我正在Windows(10)下运行脚本。似乎是一些权限问题(不允许脚本设置环境变量?)。
另一个(或实际的)问题是:如何创建一个脚本(使用Webpack)以创建JavaScript文件的缩小版本(用于生产),以及如何创建非缩小版本的脚本(用于开发)。到目前为止,我使用以下方法(有关重要部分,请参见注释):
编辑2
我现在并没有意识到这可能会有所作为,但万一确实如此:我使用的是使用create-react-app创建的React应用。我找到了问题的答案,请参见下文。
package.json:
{
"name": "test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
// Scipts for build for development and for production
"build-dev": "SET NODE_ENV=debug webpack",
"build-release": "SET NODE_ENV=production webpack"
},
"author": "",
"license": "ISC",
"dependencies": {
"babel-core": "^6.24.1",
"babel-loader": "^7.0.0",
"babel-preset-env": "^1.4.0",
"babel-preset-react": …Run Code Online (Sandbox Code Playgroud) 我想问是否有人知道如何永远运行可以加载 .env 文件。
目前,如果我们运行forever start app.js,process.env.foo 就会变得未定义。
我正在学习 NodeJS,我需要知道如何使用设置我的生产环境process.env.___。当我运行时
console.log(app.get('env')); //app is express object
我在命令提示符下得到输出development作为环境。但是如果我尝试设置一个环境变量,例如。process.env.NODE_ENV,在命令提示符下我写:set NODE_ENV=production然后再次尝试:console.log(process.env.NODE_ENV);我得到输出:undefined。我一直在网上苦苦挣扎,但还没有找到解决方案。
请在这件事上指导我。
我正在尝试在 Node js 中设置和获取环境变量。我尝试这样创建文件test.js并添加此行
console.log(process.env.NODE_ENV);
Run Code Online (Sandbox Code Playgroud)
像这样跑
set NODE_ENV=production&&node test.js
Run Code Online (Sandbox Code Playgroud)
它给了我未定义的
我遇到了一个错误,我认为是来自webpack的一方.这里是:
index.js:9 Uncaught ReferenceError: global is not defined
at eval (index.js:9)
at Object.<anonymous> (bundle.js:2548)
at __webpack_require__ (bundle.js:622)
at fn (bundle.js:48)
at eval (client:1)
at Object.<anonymous> (bundle.js:2541)
at __webpack_require__ (bundle.js:622)
at bundle.js:668
at bundle.js:671
Run Code Online (Sandbox Code Playgroud)
我的网站是:
import webpack from 'webpack';
import merge from 'webpack-merge';
import path from 'path';
import isDev from 'isdev';
import { Dir } from './src/utils';
const TARGET = process.env.npm_lifecycle_event;
let Config = {
entry: [
'babel-polyfill',
'react-hot-loader/patch',
path.join(Dir.src, 'client.js'),
],
output: {
path: path.join(Dir.public, 'build'),
filename: 'bundle.js',
},
target: …Run Code Online (Sandbox Code Playgroud)