我最近在我的NodeJS项目中从CommonJS切换到ES6模块。我面临的挑战之一是在导入我的模块之前定义全局变量。在我的主文件中,我以前使用CommonJS这样做:
const path = require('path');
global.appRoot = path.resolve(__dirname);
const myObj = require('./my-object-file');
我的 my-object-file
使用了 global.appRoot
。
在 ES6 中,我尝试了以下代码:
import path from 'path';
global.appRoot = path.resolve(path.resolve());
import myObj from './my-object-file';
假设 my-object-file.js
是这样的:
export default {
root: global.appRoot
}
但是在my-object-file.js
文件中,global.appRoot
的值未定义。
这是怎么回事?
导入模块是否在我的代码中的任何内容之前调用了?
我该如何解决这个问题(知道我绝对希望能够将路径定义为可在我的模块中访问的全局变量)?
__dirname
的等效值,则不应使用path.resolve()
,因为这只会获取当前工作目录。请参见此处以了解如何执行此操作。 - jfriend00__dirname
。关于导入和导出,我不太明白你的意思。你能否更明确地回答这个问题?可以给一个代码片段作为例子吗? - NateglobalThis
。 - bill.gates