错误:找不到模块“ build / addon.node”

时间:2019-09-15 23:14:28

标签: node.js typescript

我正在尝试使用非相对导入来导入模块,但是它不起作用:

tsconfig.json

{
  "compilerOptions": {
    "target": "es5",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": false,
    "suppressImplicitAnyIndexErrors": true,
    "rootDir": ".",
    "outDir": "build/js",
    "baseUrl": "."
    // "paths": {
    //   "@build/*": ["./build/*"]
    // }
  },
  "exclude": ["node_modules", "build-releases", "addons"]
}

代码:

// const addon = require('../../../build/addon.node');
const addon = require('build/addon.node');
const debug = true;

export { addon, debug };

注释的代码有效,但未注释的要求无效。

此错误输出:

App threw an error during load
Error: Cannot find module 'build/addon.node'
Require stack:
- /Users/name/Desktop/workspace/proj/build/js/vapp/globals.js

目录结构:

tree build/
build/
├── addon.node
└── js
    └── vapp
        ├── client.js
        ├── client.js.map
        ├── globals.js
        ├── globals.js.map
        ├── index.js
        ├── index.js.map
        ├── utils.js
        └── utils.js.map

(内部版本为CWD)

TypeScript文档说:

  

相对导入是以/、./或../.

开头的      

任何其他导入均被视为非相对导入。

     

设置baseUrl通知编译器在哪里可以找到模块。假定所有具有非相对名称的模块导入都相对于baseUrl。

问题:这是因为TypeScript不负责使用require进行模块解析吗?就像是节点相关的东西还是TypeScript的东西?

编辑

我尝试运行tsc --traceResolution,但未发现有关尝试导入addon.node的要求的信息。这让我意识到:TypeJS可能不负责模块解析,NodeJS负责。看起来您可以轻松地更改NodeJS的baseURL目录,并且如果我想使用不同的别名路径进行转译,则必须使用Webpack之类的东西。

0 个答案:

没有答案