首页 > 解决方案 > Piscina 的谷歌云运行中的路径名

问题描述

我已将 Piscina 添加到我的 Node JS 服务器,在本地它可以工作,但是当我将文件上传到 google cloud run 时,它会使用我在 Dockerfile 中指定的目录。

在节点 js 中,我使用:

 const piscina = new Piscina({
        filename: path.resolve("./") + '/workers/send_payment_by_mail_worker.js'
    });

const result = piscina.runTask({_data: this.data});

在 index.js 文件中,我可以使用:

const piscina = new Piscina({
    filename: path.resolve( __dirname + '/workers/send_payment_by_mail_worker.js')
});

打印出文件所在的正确位置。在我的 dockerfile 我有:

   FROM node:12.18.1

WORKDIR /

COPY package.json package.json
COPY package-lock.json package-lock.json

RUN npm install

COPY . .

CMD [ "node", "index.js" ]

谷歌云运行以 / 作为主目录。您需要如何配置云运行使用正确的文件目录来定位 Piscina 的文件?

我收到的错误是:

2020-11-27T07:56:31.726607ZError [ERR_MODULE_NOT_FOUND]: Cannot find module '/services/action/workers/send_payment_by_mail_worker.js' imported from /node_modules/piscina/dist/src/worker.js
Default
2020-11-27T07:56:31.726628Z at finalizeResolution (internal/modules/esm/resolve.js:284:11)
Default
2020-11-27T07:56:31.726636Z at moduleResolve (internal/modules/esm/resolve.js:665:10)
Default
2020-11-27T07:56:31.726642Z at Loader.defaultResolve [as _resolve] (internal/modules/esm/resolve.js:755:11)
Default
2020-11-27T07:56:31.726648Z at Loader.resolve (internal/modules/esm/loader.js:97:40)
Default
2020-11-27T07:56:31.726654Z at Loader.getModuleJob (internal/modules/esm/loader.js:243:28)
Default
2020-11-27T07:56:31.726660Z at Loader.import (internal/modules/esm/loader.js:178:28)
Default
2020-11-27T07:56:31.726666Z at importModuleDynamically (internal/modules/cjs/loader.js:1081:27)
Default
2020-11-27T07:56:31.726671Z at exports.importModuleDynamicallyCallback (internal/process/esm_loader.js:37:14)
Default
2020-11-27T07:56:31.726678Z at eval (eval at getImportESM (/node_modules/piscina/dist/src/worker.js:37:27), <anonymous>:1:16)
Default
2020-11-27T07:56:31.726684Z at getHandler (/node_modules/piscina/dist/src/worker.js:58:39)
Default
2020-11-27T07:56:31.726919ZuncaughtException

标签: node.jsservercloudgoogle-cloud-run

解决方案


推荐阅读