Node.js + Webpack + TypeScript:使用源文件访问项目的路径(不是使用项目)

时间:2019-01-11 02:37:13

标签: node.js typescript webpack

让我们再说一次:我不需要process.cwd,我需要 访问源项目的绝对路径。例如:

  • 源代码:C:\Users\user1\projects\lib1\src\library.ts(将来会成为Node Module)
  • 使用库的项目:C:\Users\user1\projects\someProject\src\someProject.ts

因此,我需要将C:\Users\user1\projects\lib1\src内的library.ts

我尝试过:

webpack.config.js

module.exports = {

  // ...

  target: 'node',
  externals: [nodeExternals()],

  plugins: [
    new Webpack.DefinePlugin({
      __PROJECT_ROUTE_ABSOLUTE_PATH__: __dirname
    })
  ]
};

project-types.d.ts

declare var __PROJECT_ROUTE_ABSOLUTE_PATH__: string;

如果尝试在无效JavaScript下方的console.log(__PROJECT_ROUTE_ABSOLUTE_PATH__)中使用library.ts 将产生:

console.log(C:\Users\user1\projects\lib1);

该路径正确,但是缺少引号。我不知道该怎么解释。 但是无论如何,我们如何找到正确的道路?

还有一个奇怪的现象:如果调用__dirname,则仅返回/,因此path.resolve(__dirname, 'fileName') gives C:\ fileName`

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以直接使用内置的node.js SELECT SUM(D.A), SUM(D.B), SUM(D.AB) FROM ( select A, B, case when U.A > 0 AND U.B > 0 THEN 1 end AS AB from ( select count (distinct case when I.ItemNo = 'A' then customerNo end) as A, count (distinct case when I.ItemNo = 'B' then customerNo end) as B from Items as I group by I.customerNo ) AS U ) AS D; 模块。 路径模块提供了用于处理文件和目录路径的实用程序。可以使用以下方式访问它:

path

__ filename是当前模块的文件名。这是当前模块文件的解析绝对路径。 (例如:/home/user/some/dir/file.js)

__ dirname是当前模块的目录名称。 (例如:/ home / user / some / dir)

const path = require('path');

这将解析为文件的路径。