Closed agwells closed 2 years ago
Hey @agwells, this is interesting, I'll take a look.
In the meantime: You don't have to run lingui extract
with NODE_ENV=production. The script just extracts messages to external catalog. You should only build your app with NODE_ENV=production, but stripping out this env var from lingui extract
should be just fine.
Thanks for the confirmation about NODE_ENV
. That's what I figured, because lingui extract
is just statically analyzing the source code, so it would be weird if it had separate development
and production
modes. :)
It was just due to the sequence of steps in our build pipeline, that we were running lingui extract
with NODE_ENV=production
. It's at the beginning of a stage that compiles the app in "production" mode, so I had declared NODE_ENV=production
near the top of the step. Fortunately, it was easy to change things so the lingui step uses NODE_ENV=development
, and then we switch back to production
.
Ah, cool! I'm glad you figured out a workaround. I'll keep it open just in case I find a root cause.
I just started seeing this same issue because we run lingui extract
as part of the build script. Not sure if this is an issue with jsLingui or a change in Babel.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
@tricoder42 This issue was automatically closed, but it's still happening. If you just follow the tutorials from the website, you reach this error. Any news or plans to fix it?
Just in case it got forgotten somehow, or maybe i'm doing something wrong. I'm using:
"@lingui/cli": "^3.4.0",
"@lingui/macro": "^3.4.0",
This issue probably will be fixed next Tuesday, meanwhile you can pass NODE_ENV=development before lingui extract command. @namirsab
Released 3.5.0 with this fix
I updated to @lingui/cli 3.7.1
and babel-plugin-macros 3.0.1
but I'm still seeing this issue.
Updated to 3.10.2, and still seeing this issue.
Still seeing this issue, even with NODE_ENV=production:
Invocation:
yarn run v1.22.10
$ NODE_ENV=production lingui extract --clean
Cannot process file XXX/index.tsx: Duplicate declaration "Trans"
> 1 | import { Trans } from '@lingui/macro';
| ^^^^^
package.json
:
"@lingui/loader": "^3.10.2",
"@lingui/macro": "^3.10.2",
"@lingui/react": "^3.10.2",
"babel-plugin-macros": "^3.1.0",
[... elided for brevity]
},
"devDependencies": {
"@babel/core": "^7.14.8",
"@lingui/cli": "^3.10.2",
[... elided for brevity]
}```
me too at latest lingui
Still seeing this issue, even with NODE_ENV=production:
Invocation:
yarn run v1.22.10 $ NODE_ENV=production lingui extract --clean Cannot process file XXX/index.tsx: Duplicate declaration "Trans" > 1 | import { Trans } from '@lingui/macro'; | ^^^^^
package.json
:"@lingui/loader": "^3.10.2", "@lingui/macro": "^3.10.2", "@lingui/react": "^3.10.2", "babel-plugin-macros": "^3.1.0", [... elided for brevity] }, "devDependencies": { "@babel/core": "^7.14.8", "@lingui/cli": "^3.10.2", [... elided for brevity] }```
Exactly the same for me.
Any particular update on this one? not even sure why this ticket was closed.
Dependencies:
@lingui/cli: 3.11.1,
@lingui/macro: 3.11.1
Any updates on this?
EDIT: Confirmed that adding the NODE_ENV=development
flag fixes the issue (I'm still on development anyway). But for production pipelines like the one stated above, this will cause an issue.
I go insane but this error still lives on. Isn't this the only outstanding purpose of this library??? Why the issue was closed. Even the NODE_ENV set to development is not helping!
@maxfetz In the same way, I can try to fix this issue and other issues, you can contribute to. Your comment sucks and doesn't help open-source for anything.
@micahbule
Confirmed that adding the NODE_ENV=development flag fixes the issue (I'm still on development anyway). But for production pipelines like the one stated above, this will cause an issue.
This is incorrect, on production pipelines the command lingui extract
can use NODE_ENV=development and won't affect your production bundle, since it's an independent command.
I know this sucks somehow but we have life and we always try our best :) We'll try to look at this as soon as possible.
Merry Xmas to everyone.
Sorry for my little rant. I was very frustrated.
My project looks similar to this one: @ivandotv/nextjs-translation-demo
To reproduce the problem
yarn
yarn lang:extract
Now this only works under Linux and yarn. With npm and/or Window (and yarn) you need to set the environment variable with cross-env. (Maybe somebody knows why?)
But in all circumstances, it only works with NODE_ENV=development.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
no, not really stale...
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
Hello, this is happening to me even while I set NODE_ENV=development. Any clue why? I'm on latest version.
I also had this Problem after updating all my packages. NODE_ENV=development didn't fix it. I found that the problem was the browserlists config. When I use "last 2 versions, not IE 11, not dead, > 2%" instead of only "last 2 versions" the error is fixed. I hope this helps someone else.
I was intrigued by @motionVector's comment since I also noticed a change in the number of errors reported after updating the caniuse-lite db.
I was able to narrow it down to whether the Android 4.4.3 browser should be supported by babel or not. So in our case, lingui-extract
works for the following browser list, because of the last rule:
"browserslist": [
">0.2%",
"not dead",
"not ie <= 11",
"not op_mini all",
"not android 4.4.3"
]
(Of course, setting the 0.2% cutoff to a higher value would also work because it then excludes the old stock android browsers, too)
It looks like babel applies some transforms to the source code (~I couldn't determine what features we used in the affected files and nowhere else, though~) when android 4.4.3 should be supported.
Without NODE_ENV=development
, though, a lot of those declaration errors are still throws, suggesting that babel still does some incompatible transforms in that environment.
Update: I was able to figure out what "feature" triggered babel to interfere with the lingui macro: It was affecting files where we would do a destructuring assignment at the module level:
const { Foo } = { Foo: 42 }
@iStefo Yep, removing destructuring at top level fixes the issue for me 🚀
Describe the bug I've recently upgraded my LinguiJS package versions from 2.7.0 to 2.7.2. Since the upgrade, my build step to extract language strings crashes with an error message about a duplicate declaration of
Trans
. After some experimentation, I discovered that this only happens when theNODE_ENV
environment variable isproduction
. If I setNODE_ENV
todevelopment
ortest
, it works fine.(I haven't had time yet to try to replicate this error on a newly set-up project, so it's possible it may be related to other quirks in my project.)
To Reproduce
{Trans}
like so:export default function App() { returnThis should be translated!
}
"scripts": { "extract": "NODE_ENV=production lingui extract --overwrite" }
Catalog statistics: ┌─────────────┬─────────────┬─────────┐ │ Language │ Total count │ Missing │ ├─────────────┼─────────────┼─────────┤ │ en (source) │ 293 │ - │ │ en-x-intl │ 293 │ 293 │ └─────────────┴─────────────┴─────────┘
(use "npm run add-locale" to add more locales)
(use "npm run extract" to update catalogs with new messages)
(use "npm run compile" to compile catalogs for production)
/path/to/project/node_modules/@lingui/cli/api/compat.js:48 throw e; ^
TypeError: /path/to/project/src/file.js: Duplicate declaration "Trans"
2.7.2