簡體   English   中英

Node.js + Webpack + TypeScript:使用源文件訪問項目路徑(不是使用項目)

[英]Node.js + Webpack + TypeScript: access to path of project with source files (not usage project)

讓我們再次明確:我在這個問題中不需要process.cwd ,我需要訪問源項目的絕對路徑。 例如:

  • 源碼: C:\\Users\\user1\\projects\\lib1\\src\\library.ts (以后變成Node Module)
  • 使用庫的項目: C:\\Users\\user1\\projects\\someProject\\src\\someProject.ts

所以,我需要在library.ts獲取C:\\Users\\user1\\projects\\lib1\\src

我試過:

webpack.config.js

module.exports = {

  // ...

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

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

項目類型.d.ts

declare var __PROJECT_ROUTE_ABSOLUTE_PATH__: string;

如果在library.ts嘗試console.log(__PROJECT_ROUTE_ABSOLUTE_PATH__) ,則會產生以下無效的 JavaScript:

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

路徑是正確的,但缺少引號。 我不知道怎么解釋。 但無論如何,我們如何才能獲得正確的道路?

還有一個奇怪的現象:如果調用__dirname ,只會返回/ ,所以path.resolve(__dirname, 'fileName') gives C:\\fileName `

在此處輸入圖片說明

您可以直接使用內置的 node.js path模塊。 path 模塊提供了用於處理文件和目錄路徑的實用程序。 可以使用以下方式訪問它:

const path = require('path');

__filename 是當前模塊的文件名。 這是當前模塊文件的解析絕對路徑。 (例如:/home/user/some/dir/file.js)

__dirname 是當前模塊的目錄名。 (例如:/home/user/some/dir)

fs.readFile(path.resolve(__dirname + 'fileName'))

這將解析為文件的路徑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM