Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Chokidar不是';t在docker容器中拾取文件更改_Node.js_Docker_Docker Compose - Fatal编程技术网

Node.js Chokidar不是';t在docker容器中拾取文件更改

Node.js Chokidar不是';t在docker容器中拾取文件更改,node.js,docker,docker-compose,Node.js,Docker,Docker Compose,我正在使用docker for mac版本1.12.0-rc2进行react项目。我的工作流程如下: OSX上的src/文件夹已装入容器 当开发人员在src/中修改文件时,它将转换为ES5并放置在public/中(这是有效的) 当文件在public/中更改时,另一个观察程序会触发热重新加载(在我的本地主机上工作,但不在容器中) 以下是步骤3中的步骤观察者代码: // root = "/src" const watcher = chokidar.watch(root, { usePolli

我正在使用docker for mac版本1.12.0-rc2进行react项目。我的工作流程如下:

  • OSX上的
    src/
    文件夹已装入容器
  • 当开发人员在
    src/
    中修改文件时,它将转换为ES5并放置在
    public/
    中(这是有效的)
  • 当文件在
    public/
    中更改时,另一个观察程序会触发热重新加载(在我的本地主机上工作,但不在容器中)
  • 以下是步骤3中的步骤观察者代码:

    // root = "/src"
    const watcher = chokidar.watch(root, {
        usePolling: true,
        awaitWriteFinish: {
            pollInterval: 100,
            stabilityThreshold: 250
        },
        ignored: /\.(git|gz|map)|node_modules|jspm_packages|src/,
        ignoreInitial: true,
        persistent: true
    })
        .on("change", function fileWatcher(filename) {
            const modulePath = filename.replace(`${root}/`, "");
    
            wss.clients.forEach(function sendFileChange(client) {
                send("filechange", modulePath, client);
            });
    
            if (cache[filename]) {
                wss.clients.forEach(function sendCacheFlush(client) {
                    send("cacheflush", filename, client);
                });
    
                delete cache[filename];
            }
        });
    
    和我的docker-compose.yml文件:

    version: '2'
    
    services:
      wildcat:
        build:
          context: .
          args:
            JSPM_GITHUB_AUTH_TOKEN:
        image: "nfl/react-wildcat-example:latest"
        environment:
          NODE_ENV: development
          PORT: 3000
          STATIC_PORT: 4000
          COVERAGE:
          LOG_LEVEL:
          NODE_TLS_REJECT_UNAUTHORIZED: 0
          CHOKIDAR_USEPOLLING: 'true'
        volumes:
          - ./src:/src/src
          - ./api:/src/api
        ports:
          - "3000:3000"
          - "4000:4000"
        ulimits:
          nproc: 65535
        entrypoint: "npm run"
        command: "dev"
    

    在花了一两天的时间之后,我发现了这个问题:

    ignored: /\.(git|gz|map)|node_modules|jspm_packages|src/,
    
    导致chokidar忽略
    /src
    ,这是我将所有源代码复制到docker容器中的文件夹。我在Dockerfile和docker-compose.yml中将此路径改为
    /code
    ,一切正常