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"
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With