0

这是我的文件结构简化

app-folder
   -> dist
      -> server.js
   -> src
      -> server.ts
   -> key.pem
   -> cert.pem

这是 server.ts 文件读取证书文件的简化内容

import fs from 'fs';

const options = {
  key: fs.readFileSync('../key.pem'),
  cert: fs.readFileSync('../cert.pem')
};

这是我得到的错误

server     | internal/fs/utils.js:307
server     |     throw err;
server     |     ^
server     | 
server     | Error: ENOENT: no such file or directory, open '../key.pem'
server     |     at Object.openSync (fs.js:476:3)
server     |     at Object.readFileSync (fs.js:377:35)
server     |     at Object.<anonymous> (/usr/src/app/dist/server.js:18:23)
server     |     at Module._compile (internal/modules/cjs/loader.js:1063:30)
server     |     at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
server     |     at Module.load (internal/modules/cjs/loader.js:928:32)
server     |     at Function.Module._load (internal/modules/cjs/loader.js:769:14)
server     |     at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
server     |     at internal/main/run_main_module.js:17:47 {
server     |   errno: -2,
server     |   syscall: 'open',
server     |   code: 'ENOENT',
server     |   path: '../key.pem'
server     | }
server exited with code 1

我按照本教程创建了密钥和证书

Hoangdv 指出我使用 docker 这是正确的,这是我的 Dockerfile:

FROM node:14


# Create app directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

RUN npm install -g nodemon


# Install dependencies
COPY package.json .
RUN npm install

# Bundle app source
COPY . .

RUN npx tsc

EXPOSE 8080

COPY . .复制证书吗?

4

2 回答 2

0

尝试,

var resolve = require('path').resolve
key : resolve('../key.pem')
cert : resolve('../cert.pem')
于 2021-03-18T11:43:38.967 回答
0

相对路径将相对于通过调用确定的当前工作目录进行解析process.cwd()

--- node.js 文档

import fs from 'fs';
import path from 'path';

const options = {
  key: fs.readFileSync(path.resolve(__dirname, '../key.pem')),
  cert: fs.readFileSync(path.resolve(__dirname, '../cert.pem'))
};
于 2021-03-18T11:33:35.797 回答