【发布时间】:2021-11-29 02:45:38
【问题描述】:
我正在使用卷来填充 Docker 中的 MongoDB 实例。为了访问和解析数据,我使用 papaparse 和 request(它已被贬值但仍然适用于我的用例)。当我在脚本顶部使用 require 关键字导入库时,我收到以下错误:未捕获的异常:ReferenceError: require is not defined :.
在我的 dockerfile 中,我已经安装了 npm、nodejs,并复制了 package.json。所以,我不知道为什么它不理解“require”关键字。我也尝试过使用 import,但这会导致类似的错误。
这是 dockerfile:
FROM python:3.8
ADD . /app
WORKDIR /app
RUN apt-get update
RUN apt-get -y upgrade
RUN apt-get -y install npm
RUN apt-get -y install nodejs
RUN pip install --upgrade pip
COPY requirements.txt ./app
RUN pip install -r requirements.txt
RUN rm -rf /var/cache/apt/*
COPY package.json ./app
RUN npm install
这里是 init-db.js:
const papa = require("papaparse");
const request = require("request");
const options = {/* options */};
const dataStream = request.get("https://example.com/myfile.csv");
const parseStream = papa.parse(papa.NODE_STREAM_INPUT, options);
dataStream.pipe(parseStream);
let data = [];
parseStream.on("data", chunk => {
data.push(chunk);
});
parseStream.on("finish", () => {
// Doing something with the data.
}
});
这对我来说相当新,所以任何帮助将不胜感激。
【问题讨论】:
-
你能检查你的
package.json是否包含type:module吗? -
@AnirudhModi,我使用“npm init”命令创建了 package.json,所以没有 type:module。
-
init-db文件我假设您“没有在浏览器中运行”,并且您正在节点本身中运行它?原因是,如果此代码在浏览器中运行,则require在浏览器中不可用,并且 require 仅在节点中可用,或者您可以使用browserifybrowserify.org 或webpack -
@AnirudhModi,你是对的。我在节点本身中运行它。
标签: node.js mongodb docker docker-compose