"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"
答案 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 语句中导出,我不确定。但是我的问题的解决方案就在那里,并且以稍微不同的方式完成。