Node.js docker内部但非外部的Nodejs语法错误

Node.js docker内部但非外部的Nodejs语法错误,node.js,docker,Node.js,Docker,我有一个超级简单的node.js文件,它在docker之外运行得非常好,但是当我尝试在容器中运行它时,会抛出以下语法错误: /app/index.js:第1行:语法错误:意外单词(应为“)” index.js实际上是一行: console.log(“HI”); 我的Docker文件是: FROM node:14-alpine WORKDIR /usr/app/ COPY . ./ CMD yarn start 我在内外运行相同的命令,相同版本的node等。我在Windows 10上使用支持W

我有一个超级简单的node.js文件,它在docker之外运行得非常好,但是当我尝试在容器中运行它时,会抛出以下语法错误:

/app/index.js:第1行:语法错误:意外单词(应为“)”

index.js
实际上是一行:

console.log(“HI”);
我的Docker文件是:

FROM node:14-alpine
WORKDIR /usr/app/
COPY . ./
CMD yarn start
我在内外运行相同的命令,相同版本的node等。我在Windows 10上使用支持WSL2的docker桌面。这有什么关系吗?我快发疯了…

试试这个

FROM node:14-alpine
WORKDIR /usr/app/
COPY . .
CMD [ "yarn", "start" ]
试试这个

FROM node:14-alpine
WORKDIR /usr/app/
COPY . .
CMD [ "yarn", "start" ]

这对我来说很好


index.js

console.log("HI");

Dockerfile

FROM node:14-alpine
WORKDIR /usr/app/
COPY . ./
CMD yarn start

package.json

{
  "name": "my-package",
  "scripts": {
    "start": "node index.js"
  }
}

docker-compose.yml

version: '3.7'

services:
  node_v14_test:
    build:
      context: .
      dockerfile: Dockerfile

然后使用docker compose构建并运行docker容器

docker-compose up --build

结果


这对我来说很好


index.js

console.log("HI");

Dockerfile

FROM node:14-alpine
WORKDIR /usr/app/
COPY . ./
CMD yarn start

package.json

{
  "name": "my-package",
  "scripts": {
    "start": "node index.js"
  }
}

docker-compose.yml

version: '3.7'

services:
  node_v14_test:
    build:
      context: .
      dockerfile: Dockerfile

然后使用docker compose构建并运行docker容器

docker-compose up --build

结果


似乎您需要将文件从dos转换为Linux版本,或者案例映像可能使用了错误的代码

但调试该问题的最简单方法不是使用Docker环境,而是在Dcokerfile中生成文件

FROM node:14-alpine
WORKDIR /usr/app/
COPY package.json .
RUN echo "console.log(\"HI\")" >> index.js
CMD yarn start

似乎您需要将文件从dos转换为Linux问题,或者案例图像可能使用了错误的代码

但调试该问题的最简单方法不是使用Docker环境,而是在Dcokerfile中生成文件

FROM node:14-alpine
WORKDIR /usr/app/
COPY package.json .
RUN echo "console.log(\"HI\")" >> index.js
CMD yarn start

看起来您不是在用nodejs解释文件,而是在用其他东西解释文件,可能是bash。。。确保你的package.json确实有
节点app/index.js
作为开始脚本,而不仅仅是
app/index.js
这就是它的全部…*facepalm*。我想我很少只使用node从npm脚本运行东西。不知何故,我认为
脚本:{start::::./server.js}
可以工作。谢谢看起来您不是在用nodejs解释文件,而是在用其他东西解释文件,可能是bash。。。确保你的package.json确实有
节点app/index.js
作为开始脚本,而不仅仅是
app/index.js
这就是它的全部…*facepalm*。我想我很少只使用node从npm脚本运行东西。不知何故,我认为
脚本:{start::::./server.js}
可以工作。谢谢