【问题标题】:Typescript baseUrl with Node.js带有 Node.js 的 Typescript baseUrl
【发布时间】:2017-07-23 19:05:24
【问题描述】:

为了避免 import 中的长路径,我在 tsconfig.json 中使用 Typescript baseUrl 选项

这是我的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

【问题讨论】:

    标签: node.js typescript


    【解决方案1】:

    使用 node.js 运行应用程序时传递 NODE_PATH env 参数

    例子:

    set NODE_PATH=./src
    node server.js
    

    【讨论】:

      【解决方案2】:

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

      tsconfig.json

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

      包.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"
        },
      

      【讨论】:

      • 此答案是否适用于 Windows 10 操作系统?我无法让它工作。我总是从 Nodejs 加载程序中收到此错误:在 Function.Module._resolveFilename (internal/modules/cjs/loader.js:892:15)
      【解决方案3】:

      Windows 用户可能希望使用cross-env 来回答上述问题。

      package.json

      "scripts": {
          "dev": "cross-env NODE_PATH=./ ts-node ./src/index.ts"
       }
      

      【讨论】:

        【解决方案4】:

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

        "baseUrl": "./src"

        它应该像一个魅力。

        【讨论】:

        • 它确实适用于旨在在浏览器中运行的脚本。但是对于在nodejs上运行,loader似乎无法解析require("abc/xyz"),但是可以解析require("./abc/xyz");
        猜你喜欢
        • 1970-01-01
        • 2017-12-13
        • 1970-01-01
        • 1970-01-01
        • 2014-07-02
        • 2021-04-08
        • 1970-01-01
        • 2018-10-27
        • 1970-01-01
        相关资源
        最近更新 更多