我有一个npm脚本来启动webpack开发服务器,但首先是我的环境设置 -
在我的.zshrc
- export DEV_SERVER_PORT=8001
echo返回预期结果
>echo $DEV_SERVER_PORT
8001
这是我从package.json通过npm run
webpack-dev-server --inline --hot --port 8001
这可以通过npm run -
正确执行echo $DEV_SERVER_PORT
结果:8001
这会通过npm run -
产生令人失望的结果 webpack-dev-server --inline --hot --port $DEV_SERVER_PORT
结果webpack-dev-server --inline --hot --port $DEV_SERVER_PORT
答案 0 :(得分:1)
您的问题中报告了zsh的以下结果:
>declare -p DEV_SERVER_PORT
typeset DEV_SERVER_PORT=8000
...表示您的shell变量实际上未导出,因此在子进程的环境中不可用。
运行以下命令:
export DEV_SERVER_PORT
然后,您应该看到以下内容:
>declare -p DEV_SERVER_PORT
typeset -x DEV_SERVER_PORT=8000
-x
表示设置了导出标志,并且在调用的任何子进程中设置了此变量(对其进行了任何更改)。
答案 1 :(得分:0)
您需要使用process.env
。这是一个包含所有进程的环境变量的对象。例如,如果您定义了环境变量PORT
,则可以使用以下方法访问它:
process.env.PORT
您可能需要将值转换为正确的类型。 process.env
始终包含值作为字符串,因此 - 例如对于端口 - 您可能需要将值转换为数字。
所以你最终得到的东西如下:
const port = process.env.PORT - 0;