SyntaxError:节点 js 中出现意外的令牌“导出”错误

时间:2021-05-27 05:08:30

标签: javascript ecmascript-6 module

"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 如果你深入到例子和“导出”我做了同样的事情。 如果我需要提供任何其他信息,请告诉我,因为我在 javascrpt 方面不是很擅长。 同样在 package.json 里面我已经设置了:

"type": "module"

3 个答案:

答案 0 :(得分:1)

您不能在 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;

答案 1 :(得分:0)

据我所知,您正在从 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;
}

答案 2 :(得分:0)

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