基本上,当我对ts文件进行更改时,它不会反映在浏览器中,也不会反映在应该显示刷新日志的控制台中。我使用nodemon来处理类型脚本的更改,所有这些都使用docker和docker compose。docker compose位于服务器文件夹之外,服务器文件夹的主文件存储在src子文件夹中
nodemon.json
{
"watch": [
"src",
".env"
],
"ext": "js,ts,json",
"ignore": [
"src/**/*.spec.ts"
],
"execMap": {
"ts": "node --inspect=0.0.0.0:9229 --nolazy -r ts-node/register"
}
}
packaje.json脚本
"scripts": {
"start": "NODE_PATH=./build node build/app.js",
"inspect": "nodemon --inspect src/app.ts",
"dev": "nodemon src/app.ts",
"build": "tsc -p .",
"test": "jest"
},
Docker
FROM node:16
RUN apt-get update
WORKDIR /usr/app
COPY . .
RUN yarn install
docker compose仅用于服务器
server:
container_name: server
build:
context: ./server
command: yarn run dev
volumes:
- ./server/src:/usr/app/src
- ./server/nodemon.json:/usr/app/src/nodemon.json
2条答案
按热度按时间llycmphe1#
你可以在这里尝试做几件事!
1.节点配置
在上下文中,此建议是在回顾了本教程之后得出的,本教程看起来与您正在构建的内容类似!
仔细检查nodemon配置文件的格式和名称是否正确。在帖子里,它看起来像是你给它起的名字
nodemon.js
当它被安装在docker容器中时nodemon.json
.以及,可能扩展
src
nodemon配置中的src/**/*.ts
. 我不确定要更改哪些文件以触发热重新加载,但这将告诉nodemon搜索该文件的所有子目录src
专门用于更改typescript文件的文件夹。2.使用传输类型脚本的替代解决方案
在过去,我使用构建的javascript在docker容器中为typescript进行热加载。这是在一个服务器上,具有与您描述的类似的目录结构。这可能是一个可行的最后手段。
以下是一些步骤:
安装
concurrently
(同时运行多个命令的包)在中更新脚本
package.json
```"scripts": {
"watch": "tsc -w", // Typescript watcher, will retranspile TS to JS in the dist folder when changes are made
"dev": "nodemon -L dist/index.js", // Runs nodemon in legacy mode, 'dist/index.js' is the file the Typescript is transpiled to
"start": "concurrently -k "npm:watch" "npm:dev"" // Runs the Typescript watcher and nodemon at the same time
}
command:
yarn start
volumes:
./server/src:/usr/app/src
anhgbhbe2#
我通过将nodemon设置为在容器内部使用来解决这个问题。首先,我在全球范围内安装了nodemon
然后,docker compose中的命令