SyntaxError: Unexpected token 'export' error in node js

SyntaxError: Unexpected token 'export' error in node js

"node": "14.16.0",
"npm": "6.14.11"

我有 3 个 js 文件,

dev.js

const keys = {
    googleClientID: 'creds',
    googleClientSecret: 'creds',
    mongoURI: 'creds',
    cookieKey: 'creds'
}

export { keys };

prod.js

const pKeys = {
    googleClientID: process.env.GOOGLE_CLIENT_ID,
    googleClientSecret: process.env.GOOGLE_CLIENT_SECRET,
    mongoURI: process.env.MONGO_URI,
    cookieKey: process.env.COOKIE_KEY
}

export { pkeys };

key.js

if(process.env.NODE_ENV === 'production'){
    export { pKeys } from './prod.js'
} else{
    export { keys } from './dev.js';
}

当我执行此操作时出现此错误:

file:///home/vaibhav/Documents/email-app/email-server/config/key.js:2
    export { pKeys } from './prod.js'
    ^^^^^^

SyntaxError: Unexpected token 'export'

我哪里错了?因为根据这个 doc by MDN 如果你继续看例子 'export from' 我做了同样的事情。 如果我需要提供任何其他信息,请告诉我,因为我不是很擅长 javascrpt。 同样在 package.json 里面我设置了:

"type": "module"

据我了解,您正在从 key.js 重新导出密钥。

在 key.js 试试这个:

import { pKeys as importedPKeys } from './prod.js'; // I think you had a typo for pKeys in prod.js export
import { keys as importedKeys } from './dev.js';
export let keys;
export let pKeys;
if(process.env.NODE_ENV === 'production'){
  pKeys = importedPKeys;
} else{
  keys = importedKeys;
}

好的,根据 ,我了解到您不能在 if else 语句内部导出,我不确定。但是我的问题的解决方案就在那里,而且是以稍微不同的方式完成的。

您不能在 node.js 中的 if 语句中使用 export,但以下代码应该可以实现您想要实现的目标:

    import { keys as devKeys } from './dev.js';
    import { pKeys as prodKeys } from './prod.js';

    export const keys = process.env.NODE_ENV === 'production' ? null : devKeys;
    export const pKeys = process.env.NODE_ENV === 'production' ? prodKeys : null;