如何在docker-compose中将模块导入文件

avwztpqn  于 2023-04-05  发布在  Docker
关注(0)|答案(1)|浏览(145)

目前,当我在docker中运行服务器时,我得到了这个错误:

import {dataSchema} from "./data-model.js"
>         ^^^^^^^^^^
SyntaxError: The requested module './data-model.js' does not provide an export named 'dataSchema'

尽管他这样说:

module.exports = {
    dataSchema,
}

导入如下:

import {dataSchema} from "./data-model.js"

我的dockerfile看起来像这样:

FROM node:12
WORKDIR /usr/src/server
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080
CMD ["npm", "start"]

导入dataSchema的文件与导出dataSchema的文件在同一目录级别。
目前,我正在尝试console.log()dataSchema,我假设这是由于我的dockerfile的问题而无法工作。我怀疑的下一件事是,我应该复制data-model.js文件,但我不明白为什么我的dockerfile中的COPY . .没有这样做。

mzsu5hc0

mzsu5hc01#

好吧,这不是一个从过去的爆炸,几乎embaressed如何少,我知道只是5个月前!
我认为问题在于,当你把一个文件转换成Docker镜像时,它只能访问你指定的镜像。所以你需要指定一个文件夹,或者“级别”,不管你想叫它们什么。
例如,你可能有一个名为index.js的文件,在一个名为app的文件夹下执行逻辑,你也可能有另一个名为funcs.js的文件,在那里你存储逻辑并导出到index.js。通过在你的文件夹app中创建一个docker镜像,它将可以访问index.jsfuncs.js
如果您简化了工作目录的组织方式,它也会有所帮助。
这就是我最终使用的,即使现在我知道它不是最好的,但它对我很有效:

FROM node:14
WORKDIR /
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080
CMD ["npm", "start"]

相关问题