如何解决:当前平台上递归监视功能不可用,正在用于运行 Node.js
Posted
技术标签:
【中文标题】如何解决:当前平台上递归监视功能不可用,正在用于运行 Node.js【英文标题】:How to fix: The feature watch recursively is unavailable on the current platform, which is being used to run Node.js 【发布时间】:2020-08-31 12:25:47 【问题描述】:我正在尝试在 docker 容器中运行 typescript express.js。运行 docker 后出现以下错误:
> 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)
我的 Dockerfile:
FROM node:alpine
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
CMD ["npm","start"]
还有 package.json 文件:
"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"
附注我决定加入修复: 更改 Dockerfile:
FROM node:lts-alpine
并更改 package.json:
"start": "ts-node-dev src/app.ts --poll"
【问题讨论】:
【参考方案1】:这个错误似乎是由node.js
v14 引起的,使用这个命令来修复它:
ts-node-dev --poll src/app.ts
或者您可以使用其他版本的 node.js
而不是版本 14
【讨论】:
【参考方案2】:Node v14 对 fs.watch()
API 进行了重大更改,特别是 recursive
选项(Linux 从未支持过)now raises the ERR_FEATURE_UNAVAILABLE_ON_PLATFORM
error if used on Linux。
错误报告和修复已提交至filewatcher
:https://github.com/fgnass/filewatcher/pull/6
在合并该修复并发布新版本之前,您需要坚持使用 NodeJS filewatcher 包以包含该补丁。
【讨论】:
所以我通过使用停靠中的最新节点并将以下参数添加到开头来解决我的问题,ts-node-dev src/app.ts —poll 该 repo 中的最新提交是在 2016 年 :(以上是关于如何解决:当前平台上递归监视功能不可用,正在用于运行 Node.js的主要内容,如果未能解决你的问题,请参考以下文章
网络映射/设备上云EasyNTD登录管理平台出现异常,是什么原因?