我有一个 NodeJS 应用程序,使用一些我试图放入 docker 镜像中的模块。
const Xvfb = require('xvfb')
const fs = require("fs")
const { exec } = require("child_process")
const express = require('express')
const app = express()
const port = 3000
console.log('hello world');
我不确定用户的路径,但以下是我遵循的步骤:
我的应用程序位于文件夹:/mynodejs,以下所有命令都从此文件夹运行:
我创建了包含内容的文件 package.json
{
"name": "appname",
"version": "1.0.0",
"description": "Node.js on Docker",
"author": "Some Name",
"main": "app.js",
"scripts": {
"start": "node app.js"
},
"dependencies": {
"express": "^4.16.1"
}
}
创建了文件 Dockerfile
nano Dockerfile
内容:
FROM node:14
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
CMD [ "node", "app.js" ]
创建了文件:.dockerignore
node_modules
构建文件:
sudo docker build -t myapp .
检查图像是否已创建。已创建。
sudo docker images
测试docker镜像
docker run myapp
错误:
internal/modules/cjs/loader.js:905
throw err;
^
Error: Cannot find module 'xvfb'
Require stack:
- /usr/src/app/app.js
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:902:15)
at Function.Module._load (internal/modules/cjs/loader.js:746:27)
at Module.require (internal/modules/cjs/loader.js:974:19)
at require (internal/modules/cjs/helpers.js:93:18)
at Object.<anonymous> (/usr/src/app/app.js:11:22)
at Module._compile (internal/modules/cjs/loader.js:1085:14)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
at Module.load (internal/modules/cjs/loader.js:950:32)
at Function.Module._load (internal/modules/cjs/loader.js:790:12)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:76:12) {
code: 'MODULE_NOT_FOUND',
requireStack: [ '/usr/src/app/app.js' ]
该错误并非特定于此处显示的模块“xhr2”。第一次调用 require('something')
时会引发错误我该如何解决这个问题?
您的 package.json 文件中缺少 xvfb 作为依赖项。添加它,这样你的package.json文件就变成了
{
"name": "appname",
"version": "1.0.0",
"description": "Node.js on Docker",
"author": "Some Name",
"main": "app.js",
"scripts": {
"start": "node app.js"
},
"dependencies": {
"express": "^4.16.1",
"xvfb": "^0.4.0"
}
}
我可以看到 Npm 上有不同版本的 xvfb 软件包,所以也许您需要“@cypress/xvfb”版本 1.2.4。 cypress 的版本较旧,但每周的下载量要多得多。我对xvfb不熟悉。
如果您的主机上安装了 npm,您可以使用以下命令将包添加到 package.json 文件中
npm install xvfb
或
npm install @cypress/xvfb
而不是手动编辑 package.json 文件