我正在开发一个NodeJS/TypeScript应用程序,我希望能够从dist/文件夹启动它。
每个src和dist文件夹的结构如下所示:
server/
|---dist/
| |---server/
| |---src/
| |---index.js
| |---utils/
| |---connection.js
|---src/
| |---index.ts
| |---utils/
| |---connection.ts
|
|---package.json
|---tsconfig.json
这个dist
文件夹是生成的代码,这个路径是使用我的tsconfig.json文件中的outdir
配置的。
我还将package.json中的main属性配置为dist/server/src/index.js
,将type属性配置为module
在此项目中,我使用Typescript4.0.5
我已将tsconfig.json中的paths属性指定为“utils/*”:[“src/utils/*”]
,baseUrl属性指定为“./”,属性ModuleResolution
strategy指定为Node
现在这是我的问题。我希望能够像在源代码中一样导入模块,但这次直接从dist
文件夹中导入,如下所示:
import createConnection from 'utils/connexion';
但是,当我悬停在VScode中的导入声明时,它似乎无法解析模块,并且我得到一个错误错误[ERR_MODULE_NOT_FOUND]:无法找到从/home/maxime/dev/jeuxduplacard/packages/server/dist/server/src/index.js
导入的包'utils'。
dist文件夹中的文件路径与Server文件夹中的文件路径相同。如果问题来自模块解析,是否有一种方法可以持久化dist文件夹中的路径别名(而不安装第三方库)?
{
"compilerOptions": {
"esModuleInterop": true,
"target": "es2020",
"moduleResolution": "node",
"sourceMap": true,
"baseUrl": "./",
"outDir": "dist",
"strict": true,
"lib": ["ES2017", "ES2020"],
"types": [
"node"
],
"allowSyntheticDefaultImports": true,
"noImplicitAny": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"resolveJsonModule": true,
"noImplicitReturns": true,
"noImplicitThis": true,
"incremental": true,
"skipLibCheck": true,
"strictPropertyInitialization": false,
"paths": {
"utils/*": ["src/utils/*"]
}
}
}
谢谢
是的,因为你不能从工作目录之外导入文件。您可以做的是,您可以链接一个本地模块,并像访问任何其他npm包一样访问它。
npm link (in package dir)
npm link [<@scope>/]<pkg>[@<version>]
alias: npm ln
https://docs.npmjs.com/cli/v6/commands/npm-link