我在我的 NestJS 项目中使用 dotenv v8.2.0,它一直在我的生产环境中工作。我在新电脑上克隆了该项目,在根文件夹中创建了一个包含正确变量的 .env 文件,但 .env 文件现在没有内置到 dist 文件夹中。
.env 文件:
databaseHost=database-di...
databasePassword=a3^U...
Run Code Online (Sandbox Code Playgroud)
我的 main.ts 文件的设置(仅相关部分):
import { config } from 'dotenv';
import * as path from 'path';`
const ENV_FILE = path.join(__dirname, '..', '.env');
config({ path: ENV_FILE });
Run Code Online (Sandbox Code Playgroud)
当我记录 dotenv 配置函数时,我得到以下信息:
{
error: Error: ENOENT: no such file or directory, open 'C:\Users\Jasper\***\dist\.env'
at Object.openSync (fs.js:461:3)
at Object.readFileSync (fs.js:364:35)
at Object.config (C:\Users\Jasper\***\node_modules\dotenv\lib\main.js:96:29)
at Object.<anonymous> (C:\Users\Jasper\***\dist\src\main.js:21:22)
at Module._compile (internal/modules/cjs/loader.js:1176:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1196:10)
at Module.load (internal/modules/cjs/loader.js:1040:32)
at Function.Module._load (internal/modules/cjs/loader.js:929:14)
at Function.executeUserEntryPoint …Run Code Online (Sandbox Code Playgroud) 在我的 NestJS 项目中,本地构建和运行是可行的,但是当在我的 Azure 管道中构建相同的代码时,它最近开始失败,因为在命令中找不到某些模块npm run build。当我在本地运行该命令时,没有任何问题并且可以正确构建。
有许多模块确实可以正确找到(或没有给出错误),那么为什么这些模块不能呢?您可以在 Imgur 上的此图像中找到我的文件布局的图像,并且相关文件可见。所有类都被声明为,export class ... {}并且大多数类也被导入到 AppModule 中,它们不会给出错误。
管道布置(相关部分):
trigger:
- master
- dev
pool:
vmImage: 'ubuntu-latest'
steps:
- task: NodeTool@0
displayName: 'Install Node 12'
inputs:
versionSpec: 12.0.0
- script: |
npm install -g typescript
npm install
npm test
displayName: 'run tests'
- script: |
npm run build
displayName: 'build dist folder'
Run Code Online (Sandbox Code Playgroud)
管道日志:(相关部分)
Generating script.
Script contents:
npm run build
========================== Starting Command Output ===========================
> fleetbot-nestjs@0.0.1 …Run Code Online (Sandbox Code Playgroud)