带有Node.js的Typescript baseUrl

时间:2017-03-03 15:32:09

标签: node.js typescript

为了避免import中的长路径,我在我的baseUrl

中使用了Typescript tsconfig.json选项

这是我的tsconfig.json

{
    "compilerOptions": {
        "target": "ES6",
        "module": "none",
        "removeComments": true,
        "rootDir": "./",
        "outDir": "Build",
        "moduleResolution": "node",
        "noImplicitAny": true,
        "pretty": true,
        "baseUrl": "./"
    },
    "exclude": [
        "node_modules",
        "Build"
    ]
}

所以不要这样做

import foo from "../../../../hello/foo"

我这样做

import foo from "hello/foo"

它在Typescript编译器中工作正常,但是当我用node.js运行我的应用程序时,我有这个错误:

module.js:474
    throw err;
    ^

Error: Cannot find module 'hello/foo'

P.s:我不想像我在互联网上看到的那样替换require()功能

那么如何让node.js与baseUrl一起使用或者使用typescript将"hello/foo"之类的路径替换为"../../../../hello/foo"

Typescript编译器版本:

Version 2.3.0-dev.20170303

3 个答案:

答案 0 :(得分:7)

使用node.js运行应用时传递NODE_PATH env param

示例:

set NODE_PATH=./src
node server.js

答案 1 :(得分:0)

正如@jez所说,您需要在运行节点应用程序时设置NODEPATH。此配置可以帮助您:

tsconfig.json

"outDir": "dist",
"baseUrl": "./",

Package.json

"scripts": {
    "build": "tsc",
    "dev": "NODE_PATH=./ ts-node ./src/index.ts",
    "start": "NODE_PATH=./dist node ./dist/index.js",
    "prod": "npm run build && npm run start"
  },

答案 2 :(得分:0)

只需将此行添加到tsconfig.json文件中即可。

"baseUrl": "./src"

它应该像魅力一样工作。