Docker - 无法解析“/usr/src/app/src”中的节点模块

dat*_*den 1 node.js npm docker reactjs

我有这个docker服务:

client/
      .dockerignore
      Dockerfile-dev
      package.json
      node_modules/
                  react-router-dom/   
                  spotify-web-api-js/
                  and-many-more/
      src/  
         App.jsx
         Spotify.js
Run Code Online (Sandbox Code Playgroud)

它安装以下node模块:

包.json

{
  "name": "client",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "axios": "^0.18.0",
    "react": "^16.8.2",
    "react-dom": "^16.8.2",
    "react-router-dom": "^4.3.1",
    "react-scripts": "2.1.5",
    "spotify-web-api-js": "^0.22.1"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": "react-app"
  },
  "browserslist": [
    ">0.2%",
    "not dead",
    "not ie <= 11",
    "not op_mini all"
  ],
  "devDependencies": {
    "enzyme": "^3.8.0",
    "enzyme-adapter-react-16": "^1.7.1"
  }
}
Run Code Online (Sandbox Code Playgroud)

像这样:

Dockerfile-dev

# base image
FROM node:11.6.0-alpine

# set working directory
WORKDIR /usr/src/app

# add `/usr/src/app/node_modules/.bin` to $PATH
ENV PATH /usr/src/app/node_modules/.bin:$PATH

# install and cache app dependencies
COPY package.json /usr/src/app/package.json
RUN npm install --silent
RUN npm install react-scripts@2.1.2 -g --silent

# start app
CMD ["npm", "start"]   
Run Code Online (Sandbox Code Playgroud)

在同一条路上,src,我观察到两种不同的行为:

1)这有效:

应用程序.jsx

import React, { Component } from 'react';
import { Route, Switch } from 'react-router-dom';
Run Code Online (Sandbox Code Playgroud)

2)但这不起作用:

Spotify.js

import React, { Component } from 'react';   
import SpotifyWebApi from 'spotify-web-api-js';
Run Code Online (Sandbox Code Playgroud)

抛出以下错误:

Failed to compile
./src/Spotify.js
Module not found: Can't resolve 'spotify-web-api-js' in '/usr/src/app/src'
Run Code Online (Sandbox Code Playgroud)

docker-compose-dev.yml

  client:
    build:
      context: ./services/client
      dockerfile: Dockerfile-dev
    volumes:
      - './services/client:/usr/src/app'
      - '/usr/src/app/node_modules'
    ports:
      - 3007:3000
    environment:
      - NODE_ENV=development
      - REACT_APP_WEB_SERVICE_URL=${REACT_APP_WEB_SERVICE_URL}
    depends_on:
      - web  
Run Code Online (Sandbox Code Playgroud)

.dockerignore

node_modules
coverage
build
env
htmlcov
.dockerignore
Dockerfile-dev
Dockerfile-prod
Run Code Online (Sandbox Code Playgroud)

我缺少什么?

小智 6

希望这对适合我的人有帮助

docker-compose down -v
Run Code Online (Sandbox Code Playgroud)

它删除所有卷。