Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to fix: The feature watch recursively is unavailable on the current platform, which is being used to run Node.js

Tags:

I am trying to run a typescript express.js in a docker container. After running the docker I get the following error:

> ts-node-dev src/app.ts  Using ts-node version 8.10.1, typescript version 3.9.2 TypeError [ERR_FEATURE_UNAVAILABLE_ON_PLATFORM]: The feature watch recursively is unavailable on the current platform, which is being used to run Node.js     at Object.watch (fs.js:1441:11)     at add (/app/node_modules/filewatcher/index.js:74:34)     at /app/node_modules/filewatcher/index.js:93:5     at FSReqCallback.oncomplete (fs.js:176:5) 

my Dockerfile:

FROM node:alpine  WORKDIR /app COPY package.json . RUN npm install COPY . .  CMD ["npm","start"] 

and the package.json file:

{   "name": "app-name",   "version": "1.0.0",   "description": "Init master",   "main": "src/app.ts",   "scripts": {     "build": "./node_modules/.bin/tsc",     "start": "ts-node-dev src/app.ts"   },   "repository": {     "type": "git",     "url": "https://*****@dev.azure.com/********"   },   "author": "",   "license": "ISC",   "dependencies": {     "celebrate": "^12.1.1",     "colors": "^1.4.0",     "cors": "^2.8.5",     "dotenv": "^8.2.0",     "event-dispatch": "^0.4.1",     "eventemitter3": "^4.0.0",     "express": "^4.17.1",     "helmet": "^3.22.0",     "jsonwebtoken": "^8.5.1",     "moment": "^2.25.3",     "mongoose": "^5.9.13",     "morgan": "^1.10.0",     "ms": "^2.1.2",     "pbkdf2": "^3.0.17",     "redis": "^3.0.2",     "reflect-metadata": "^0.1.13",     "status-code-enum": "^1.0.0",     "swagger-jsdoc": "^4.0.0",     "swagger-ui-express": "^4.1.4",     "ts-node": "^8.10.1",     "typedi": "^0.8.0",     "uuid": "^8.0.0",     "winston": "^3.2.1"   },   "devDependencies": {     "@types/express": "^4.17.6",     "@types/mongoose": "^5.7.16",     "@types/node": "^13.13.5",     "ts-node-dev": "^1.0.0-pre.44",     "typescript": "^3.8.3"   } } 

P.S. I have decided to include the fix: change the Dockerfile:

FROM node:lts-alpine 

and change the package.json:

"start": "ts-node-dev src/app.ts --poll" 
like image 645
Ehsan Zargar Ershadi Avatar asked May 14 '20 19:05

Ehsan Zargar Ershadi


Video Answer


1 Answers

Node v14 introduced a breaking change to the fs.watch() API, specifically that the recursive option (which has never been supported on Linux) now raises the ERR_FEATURE_UNAVAILABLE_ON_PLATFORM error if used on Linux.

A bug report and fix have been submitted to filewatcher: https://github.com/fgnass/filewatcher/pull/6

Until that fix is merged and a new version released, you'll need to stick to NodeJS < v14, or override the filewatcher package installed locally to include that patch.

like image 120
bradenm Avatar answered Sep 18 '22 05:09

bradenm