我更改了我的设置,以使用es6模块,并试图使dotenv工作。
我的文件夹结构是这样的:
服务器server.js和config.env
server/db/conn.js .db
在conn.js中
import * as dotenv from 'dotenv'
dotenv.config({ path: './config'})
但是我希望config.env位于server/db中,而不是我的服务器根文件夹中。即使它现在不在根文件夹中工作。
我读到了所有的内容--把env放在与服务器相同的文件夹中,这就是它,但是我一直把它拿回来。
The `uri` parameter to `openUri()` must be a string, got "undefined"
所以它没有使用我的env。我尝试将conn.js、server.js、config.js放在同一个文件夹中,省略"path:“部分,只执行dotenv.config(),但结果是相同的。
它在前面的“要求”和设置路径的方法中运行得很好,但是我切换到了es6模块,这样就不能再工作了。
我读过很多关于这方面的文章,但都不起作用。
发布于 2022-08-06 08:03:13
显然你不能说出env文件的名字。当我使用Require方法时,我将文件命名为"config.env“,它可以很好地使用该方法。
使用es6导入方法,这似乎不起作用。我读过的所有文档都没有提到不给文件命名什么的。所以我把它命名为".env“,现在它起作用了。
发布于 2022-08-06 08:27:12
您需要将完整文件名传递给path
选项。(config.env
而不仅仅是config
)
files in project dir
$ ls -a1
main.js
.env
.env.production
<-- truncated -->
.env.production
PORT=8000
NODE_ENV=production
main.js
import dotenv from 'dotenv'
dotenv.config({ path: './.env.production' })
console.log(process.env.NODE_ENV, process.env.PORT)
output
production 8000
https://stackoverflow.com/questions/73258036
复制相似问题