有模块问题 Dockerizng 简单节点应用程序
Having modules problems Dockerizng simple node app
在尝试创建我的第一个 node.js 应用程序时遇到一些问题,对 JS 来说超级新..
正在尝试对应用程序进行 docker 化,就像这样:
docker build -t echo_app .
docker run -p 3000:3000 echo_app
最终目标是回显用户输入,如下所示:
http://example/?name=Eyal -> Hello Eyal
http://example/ -> Hello World
即时通讯出错
Error: Cannot find module 'express'
Require stack:
- /app/index.js
.
.
code: 'MODULE_NOT_FOUND',
requireStack: [ '/app/index.js' ]
}
Directroy 包含:
- index.js
const express = require('express')
const log4js = require('log4js')
const app = express()
const logger = log4js.getLogger()
const echo = (req, res) => {
logger.debug("Request: ", req)
const input = 'name' in req.query ? req.query.input : ''
if (input.length == 0) {
res.send('Echo World')
} else {
res.send(`Echo ${input}`)
}
}
app.get('/', (req, res) => echo(req, res))
- Docker 文件
FROM mhart/alpine-node:12
WORKDIR /app
ADD . ./
ENTRYPOINT ["node", "/app/index.js"]
- package.json
{
"name": "echo",
"version": "1.0.0",
"description": "You talk, we talk back!",
"main": "index.js",
"author": "eyal",
"license": "MIT",
"dependencies": {
"express": "^4.17.1",
"js-yaml": "^3.13.1",
"log4js": "^5.2.2",
"saslprep": "^1.0.3"
}
}
要启动并 运行,您首先需要通过将 npm install
添加到您的 Dockerfile 来安装节点依赖项,就像这样
FROM mhart/alpine-node:12
WORKDIR /app
ADD . ./
RUN npm install
ENTRYPOINT ["node", "/app/index.js"]
然后您需要通过添加
让您的 Node 应用程序监听请求
app.listen(3000, () => {
console.log(`Example app listening at http://localhost:3000`)
})
在 index.js 的底部。
最后,您的代码中有一个小错误。 req.query.input
需要 req.query.name
.
这应该能让你继续前进。
在尝试创建我的第一个 node.js 应用程序时遇到一些问题,对 JS 来说超级新..
正在尝试对应用程序进行 docker 化,就像这样:
docker build -t echo_app .
docker run -p 3000:3000 echo_app
最终目标是回显用户输入,如下所示:
http://example/?name=Eyal -> Hello Eyal
http://example/ -> Hello World
即时通讯出错
Error: Cannot find module 'express'
Require stack:
- /app/index.js
.
.
code: 'MODULE_NOT_FOUND',
requireStack: [ '/app/index.js' ]
}
Directroy 包含:
- index.js
const express = require('express')
const log4js = require('log4js')
const app = express()
const logger = log4js.getLogger()
const echo = (req, res) => {
logger.debug("Request: ", req)
const input = 'name' in req.query ? req.query.input : ''
if (input.length == 0) {
res.send('Echo World')
} else {
res.send(`Echo ${input}`)
}
}
app.get('/', (req, res) => echo(req, res))
- Docker 文件
FROM mhart/alpine-node:12
WORKDIR /app
ADD . ./
ENTRYPOINT ["node", "/app/index.js"]
- package.json
{
"name": "echo",
"version": "1.0.0",
"description": "You talk, we talk back!",
"main": "index.js",
"author": "eyal",
"license": "MIT",
"dependencies": {
"express": "^4.17.1",
"js-yaml": "^3.13.1",
"log4js": "^5.2.2",
"saslprep": "^1.0.3"
}
}
要启动并 运行,您首先需要通过将 npm install
添加到您的 Dockerfile 来安装节点依赖项,就像这样
FROM mhart/alpine-node:12
WORKDIR /app
ADD . ./
RUN npm install
ENTRYPOINT ["node", "/app/index.js"]
然后您需要通过添加
让您的 Node 应用程序监听请求app.listen(3000, () => {
console.log(`Example app listening at http://localhost:3000`)
})
在 index.js 的底部。
最后,您的代码中有一个小错误。 req.query.input
需要 req.query.name
.
这应该能让你继续前进。