- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经使用 yarn workspaces 为 typescript Node.JS 项目设置了一个 monorepo。构建项目工作正常,但是,我在本地开发过程中遇到了问题。
我需要在运行 yarn dev
之前手动运行 yarn build
。否则我会收到以下错误:
Error: Cannot find module '/Users/benedikt/code/monorepo-build/node_modules/@bhirmer/utils/dist/index.js'. Please verify that the package.json has a valid "main" entry
这是 sample repo重现了这个问题。
或者,重要文件。
packages/
utils
services/
api
{
"name": "@bhirmer/monorepo",
"description": "Workspace",
"private": true,
"workspaces": [
"packages/*",
"services/*"
],
"scripts": {},
"devDependencies": {
"eslint": "~7.14.0",
"typescript": "^4.0.5"
}
}
{
"compilerOptions": {
"module": "commonjs",
"target": "ES2015",
"lib": ["ES2019", "dom"],
"types": ["node"],
"esModuleInterop": true,
"skipLibCheck": true,
"sourceMap": true,
"noEmitOnError": true,
"allowUmdGlobalAccess": true,
"allowJs": false,
"strict": true,
"forceConsistentCasingInFileNames": true,
"noEmit": false,
"moduleResolution": "node",
"resolveJsonModule": true,
"allowSyntheticDefaultImports": true,
"noImplicitAny": true,
"noUnusedLocals": true,
"noImplicitThis": true,
"strictNullChecks": true,
"noImplicitReturns": true,
"preserveConstEnums": true,
"suppressImplicitAnyIndexErrors": true,
"composite": true,
"baseUrl": "../..",
"paths": {
"@bhirmer/*": ["packages/*/src"]
}
},
"include": ["src/**/*"],
"exclude": ["node_modules", "dist"]
}
{
"name": "@bhirmer/utils",
"version": "1.0.0",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"files": [
"dist"
],
"scripts": {
"build": "yarn run clean && yarn run compile",
"clean": "rimraf ./dist && rimraf ./tsconfig.buildinfo",
"compile": "tsc --build",
"test": "yarn run build"
},
"dependencies": {
"@types/node": "^14.14.12"
},
"devDependencies": {},
"sideEffects": false
}
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"baseUrl": "../../",
"rootDir": "./src",
"outDir": "./dist",
"composite": true
},
"include": ["src/**/*"],
"exclude": ["node_modules", "dist"]
}
{
"name": "@bhirmer/api",
"description": "api",
"author": "Benedikt Hirmer <benedikt@hirmer.me",
"license": "UNLICENSED",
"private": true,
"version": "1.0.0",
"main": "server/index",
"scripts": {
"dev": "PROJECT_ID=test-dev PORT=3010 nodemon src/server/index.ts",
"clean": "rimraf ./dist",
"compile": "NODE_ENV=production tsc --build",
"build": "yarn run compile",
"start": "PROJECT_ID=test-prod NODE_ENV=production node dist/server/index.js",
},
"dependencies": {
"@bhirmer/utils": "^1.0.0",
"@types/compression": "^1.7.0",
"@types/express": "^4.17.11",
"@types/node": "^14.14.12",
"compression": "^1.7.4",
"express": "^4.17.1",
"typescript": "^4.2.4"
},
"devDependencies": {
"nodemon": "^2.0.7",
"ts-node": "^9.1.1"
}
}
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"outDir": "dist",
"baseUrl": "../../",
// "rootDir": "src", // Getting `TypeError: src/server/index.ts: Emit skipped` if not commented out
"composite": true
},
"include": ["src/**/*"],
"types": ["typePatches"],
"references": [{ "path": "../../packages/utils" }]
}
import { getProjectID } from '@bhirmer/utils';
...
const projectID = getProjectID();
...
另一点要注意的是,一旦我在 services/api/tsconfig.json
中设置了 "rootDir": "src"
,然后我遇到了以下错误:
TypeError: src/server/index.ts: Emit skipped
if not commented out
最佳答案
NPM 工作区仍然需要您在根目录(带有工作区定义/位置的 package.json 所在的位置)内运行 npm install
,以便与本地包建立相关的符号链接(symbolic link)。
当你这样做时,你应该得到:
node_modules/
@bhirmer/
utils/ <-- symlink to /packages/utils/
api/ <-- symlink to /services/api/
packages/
utils/
...
services/
api/
...
package.json <-- root package.json with "workspaces"
每次创建一个新的本地包文件夹时,您都必须重新运行它,其中包含 package.json,您希望从其他地方访问它。
关于node.js - Monorepo – Yarn workspaces Typescript Node.JS 项目 – 运行 nodemon 时找不到模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67562579/
我用运行 Node node --debug app OR node --debug-brk app 它有反应 debugger listening on port 5858 Express serv
这个问题在这里已经有了答案: What is the difference between (int *i) and (int* i) in context of both C and C++? [
我有一个应用程序,它通过消息队列将数据库写入命令分派(dispatch)给工作人员(数量非常大),因此无法保证它们的接收顺序。 我有两个 Node ,例如“Account”和“Media”。在此假设的
有没有办法在调用 ts-node 时将选项传递给 Node ?我正在尝试在 Node 中使用一个实验性功能,如果它能与 ts-node 一起使用,那就太好了。 这就是我目前正在做的事情: ts-nod
我有一个容器化的Node应用程序,它在DigitalOcean服务器上运行。当我更新服务器上的应用程序时,该应用程序必须关闭一小段时间。为了能够更新应用程序并避免停机,我目前正在阅读零停机时间部署/蓝
我正在编写一个 Node.js 应用程序。我正在使用 request 和 Cheerio 加载一组 URL 并获取该网站的大量信息,现在假设我想要获取的只是标题: var urls = {"url_1
如果不弹出以下错误,我无法安装任何 Node.js 模块。错误代码引用package.json文件。如果知道为什么会发生这种情况,我们将不胜感激。 最佳答案 这些不是错误,它们只是警告。一切都应该如此
如果我运行(从我的项目目录中): supervisor javascripts/index.js 我得到:/usr/bin/env: Node :没有这样的文件或目录 如果我运行: node java
我已遵循使用 Node-Inspector 的所有步骤 但是当我打开应用程序时,我在控制台上看不到任何脚本或日志。 我的应用程序在端口 4000 上运行。我认为唯一可能发生冲突的是端口 8080 上的
我在android中使用rxjava2,有时会遇到这样的问题: Observable.fromArray( // maybe a list about photo url in SD
我目前正在使用 Node 光纤来编写同步服务器端代码。我主要通过 try-catch block 进行错误处理,但外部库或其他小部分异步代码中总是有可能发生错误。我正在考虑使用新的域功能来尝试将这些错
看起来node-debug是node-inspector周围的一个shell?分别什么时候应该使用? 最佳答案 如果您安装node-debug,您只能访问node-debug命令。 如果您安装node
我目前正在代理后面工作,该代理不允许我执行此命令的 HTTP GET 请求阶段: Node node-sass/scripts/build.js 请求阶段: gyp http GET https://
听说node js可以用在服务端。我以前用过jsp。 jsp页面内部的java代码对客户端是不可见的。如果 Node js 只是 javascript,那么它如何对客户端不可见? 最佳答案 首先,No
我正在为 Node native 插件从 node-waf 构建迁移到 node-gyp 构建系统。 node-gyp 说它支持多个目标版本,但我在使用 node-gyp 时找不到如何指定目标 Nod
给定一个 $node ,我正在尝试在以下两种输出该 $node 的方式之间做出决定。 要么 $output = theme('node', $node); 或 node_build_content($
如果package.json中的窗口A打开一个新窗口B,node-main如何访问它?这是我的代码: package.json { "main": "index.html",
我试图在我的 xml 中的特定节点 ( ) 之前插入一个注释节点。这是它的方法: function test(xmlResponse) { var parser = new DOMParse
我正在尝试做npm install wrtc使用 Node 版本 16.14.0 但这还没有完成。它在给npm error code 1所以我试图将 Node 版本更改为以前的 lts 14.19.0
当我在 Visual Studio 中运行 Node.js 应用程序时,我收到以下消息:DeprecationWarning: 'node --debug' 和 'node --debug-brk'
我是一名优秀的程序员,十分优秀!