骑白马的包子 · 使用OSS Java ...· 3 月前 · |
近视的咖啡 · 【python】批量调整图片亮度和饱和度,比 ...· 1 年前 · |
留胡子的打火机 · mybatis ...· 1 年前 · |
酒量小的蟠桃 · 电脑怎么打科学计数法-掘金· 1 年前 · |
豪情万千的牛肉面 · 网络爬虫Scrapy从入门到进阶 - 简书· 1 年前 · |
在我的Express项目中,我从像
@common/foo
这样的路径中导入。感谢
paths
in
tsconfig.json
,它只是
../common/src/foo
的别名。这太棒了,并且在
nodemon.json
中使用这个脚本进行开发
{
"watch": ["src", "../common/src"],
"ext": "ts",
"ignore": ["src/public"],
"exec": "ts-node -r tsconfig-paths/register src/index.ts"
}
问题是我不能让它在生产模式下工作。
我用
tsc
构建这个项目,如果我检查生成的文件,它们将从
@common/
而不是从
../common/src/
导入内容。一开始我认为它很好,因为
tsconfig-paths
在运行时工作,所以我只需要将它包含在
start
脚本中,如下所示:
node -r tsconfig-paths/register dist/index.js
不幸的是,它没有工作,而且我在控制台中得到了那些
Cannot find module '@common/foo
错误消息。
有什么问题吗?我配置错了吗?
我的
package.json
(删除了所有不相关的部分):
{
"main": "index.js",
"scripts": {
"start": "cross-env NODE_ENV=prod node dist/index.js",
"build": "rimraf ./dist/ && cross-env NODE_ENV=prod tsc"
"dependencies": {
"express": "^4.17.1"
"devDependencies": {
"@types/express": "^4.17.4",
"@types/node": "^13.11.0",
"cross-env": "^6.0.3",
"rimraf": "^3.0.2",
"ts-node": "^8.8.2",
"tsconfig-paths": "^3.9.0",
"typescript": "^3.8.3"
}
我的
tsconfig.json
(删除了所有不相关的部分):
{
"compilerOptions": {
"module": "commonjs",
"baseUrl": "./",
"outDir": "dist",
"experimentalDecorators": true,
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
"noImplicitAny": false,
"target": "es6",
"emitDecoratorMetadata": true,
"moduleResolution": "node",
"importHelpers": true,
"types": [
"node"
"typeRoots": [
"node_modules/@types"
"paths": {
"@common/*": [
"../common/src/*"
"include": [
"./src/**/*.ts"
"exclude": [
"./src/dist/"
"references": [
"path": "../common"
}
发布于 2020-10-29 07:28:53
对于那些仍被困在这个问题上的人:
node -r ts-node/register/transpile-only -r tsconfig-paths/register dist/index.js
这就是你需要做的。
发布于 2020-05-08 13:07:30
这在很多地方都是被问到的,而且显然类型记录可以为开发提供路径别名,但不能用于生产(请不要引用我的话,它已经用了不到一个月的时间)。
为了解决这个问题,我安装了‘模块-别名’,这是一个在构建后解决路径问题的包,而不影响开发。
我正在构建一个Express-js应用程序,并拥有以下文件:
server.js:
import env from '@env';
import app from './app';
app.listen(env.SERVER_PORT || 3000);
tsconfig.json (相关部件):
{
"compilerOptions": {
"baseUrl": "./src",
"paths": {
"@env": ["path/to/env"]
}
这解决了在开发运行时的路径,但不是在使用'tsc‘构建之后。为了解决这个问题,我添加了“模块-别名”包,并做了以下更改:
server.js:
import './paths';
import env from '@env';
import app from './app';