Comments (55)
v2.0.1
has been published which locks the date-fns
version to 2. v3.0.0
will follow.
from date-fns-tz.
It would probably be good to release v2.0.1 of this that caps the date-fns dependency to ^2
for all the automated systems that keep wanting to upgrade it currently like dependabot
from date-fns-tz.
@marnusw any timeline on when you will get a chance to release new version that supports date-fns v3?
from date-fns-tz.
@marnusw sorry for the mess! I wish I had given you a heads-up before v3.0.0
from date-fns-tz.
Can the issue be re-opened? It's a bit misleading right now, because date-fns v3 is not yet supported, right?
from date-fns-tz.
It would be nice to match the major versioning of date-fns with this change, publish it as "v3.0.0".
from date-fns-tz.
Yeah, I believe this shouldn't be closed as v3 is still not supported
from date-fns-tz.
@marnusw there are some errors when using date-fns v3 and formatInTimeZone
function from date-fns-tz
import formatInTimeZone from 'date-fns-tz/formatInTimeZone';
./node_modules/date-fns-tz/esm/formatInTimeZone/index.js:1:0-61 - Error: Module not found: Error: Package path ./_lib/cloneObject/index.js is not exported from package C:\Git\projects\fiyu\frontend\node_modules\date-fns (see exports field in C:\Git\projects\fiyu\frontend\node_modules\date-fns\package.json)
./node_modules/date-fns-tz/esm/format/index.js:1:0-53 - Error: Module not found: Error: Package path ./format/index.js is not exported from package C:\Git\projects\fiyu\frontend\node_modules\date-fns (see exports field in C:\Git\projects\fiyu\frontend\node_modules\date-fns\package.json)
./node_modules/date-fns-tz/esm/toDate/index.js:1:0-57 - Error: Module not found: Error: Package path ./_lib/toInteger/index.js is not exported from package C:\Git\projects\fiyu\frontend\node_modules\date-fns (see exports field in C:\Git\projects\fiyu\frontend\node_modules\date-fns\package.json)
./node_modules/date-fns-tz/esm/toDate/index.js:2:0-101 - Error: Module not found: Error: Package path ./_lib/getTimezoneOffsetInMilliseconds/index.js is not exported from package C:\Git\projects\fiyu\frontend\node_modules\date-fns (see exports field in C:\Git\projects\fiyu\frontend\node_modules\date-fns\package.json)
from date-fns-tz.
getting some erros trying to start my application with vite
X [ERROR] Missing "./_lib/cloneObject/index.js" specifier in "date-fns" package [plugin vite:dep-pre-bundle]
node_modules/vite/node_modules/esbuild/lib/main.js:1374:21:
1374 β let result = await callback({
β΅ ^
at e (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:21914:25)
at n (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:21914:627)
at o (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:21914:1297)
at resolveExportsOrImports (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:29473:20)
at resolveDeepImport (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:29492:31)
at tryNodeResolve (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:29217:20)
at Context.resolveId (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:28985:28)
at Object.resolveId (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:63629:64)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:67637:21
at async file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:41080:34
at async requestCallbacks.on-resolve (D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:1374:22)
at async handleRequest (D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:731:11)
This error came from the "onResolve" callback registered here:
node_modules/vite/node_modules/esbuild/lib/main.js:1293:20:
1293 β let promise = setup({
β΅ ^
at setup (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:41060:19)
at handlePlugins (D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:1293:21)
at buildOrContextImpl (D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:979:5)
at Object.buildOrContext (D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:787:5)
at D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:2197:68
at new Promise (<anonymous>)
at Object.context (D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:2197:27)
at Object.context (D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:2037:58)
at prepareEsbuildOptimizerRun (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:65419:35)
The plugin "vite:dep-pre-bundle" was triggered by this import
node_modules/date-fns-tz/esm/zonedTimeToUtc/index.js:1:24:
1 β import cloneObject from 'date-fns/_lib/cloneObject/index.js'
β΅ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
X [ERROR] Missing "./_lib/cloneObject/index.js" specifier in "date-fns" package [plugin vite:dep-pre-bundle]
node_modules/vite/node_modules/esbuild/lib/main.js:1374:21:
1374 β let result = await callback({
β΅ ^
at e (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:21914:25)
at n (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:21914:627)
at o (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:21914:1297)
at resolveExportsOrImports (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:29473:20)
at resolveDeepImport (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:29492:31)
at tryNodeResolve (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:29217:20)
at Context.resolveId (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:28985:28)
at Object.resolveId (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:63629:64)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:67637:21
at async file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:41080:34
at async requestCallbacks.on-resolve (D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:1374:22)
at async handleRequest (D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:731:11)
This error came from the "onResolve" callback registered here:
node_modules/vite/node_modules/esbuild/lib/main.js:1293:20:
1293 β let promise = setup({
β΅ ^
at setup (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:41060:19)
at handlePlugins (D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:1293:21)
at buildOrContextImpl (D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:979:5)
at Object.buildOrContext (D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:787:5)
at D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:2197:68
at new Promise (<anonymous>)
at Object.context (D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:2197:27)
at Object.context (D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:2037:58)
at prepareEsbuildOptimizerRun (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:65419:35)
The plugin "vite:dep-pre-bundle" was triggered by this import
node_modules/date-fns-tz/esm/formatInTimeZone/index.js:1:24:
1 β import cloneObject from 'date-fns/_lib/cloneObject/index.js'
β΅ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
X [ERROR] Missing "./_lib/toInteger/index.js" specifier in "date-fns" package [plugin vite:dep-pre-bundle]
node_modules/vite/node_modules/esbuild/lib/main.js:1374:21:
1374 β let result = await callback({
β΅ ^
at e (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:21914:25)
at n (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:21914:627)
at o (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:21914:1297)
at resolveExportsOrImports (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:29473:20)
at resolveDeepImport (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:29492:31)
at tryNodeResolve (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:29217:20)
at Context.resolveId (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:28985:28)
at Object.resolveId (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:63629:64)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:67637:21
at async file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:41080:34
at async requestCallbacks.on-resolve (D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:1374:22)
at async handleRequest (D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:731:11)
This error came from the "onResolve" callback registered here:
node_modules/vite/node_modules/esbuild/lib/main.js:1293:20:
1293 β let promise = setup({
β΅ ^
at setup (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:41060:19)
at handlePlugins (D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:1293:21)
at buildOrContextImpl (D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:979:5)
at Object.buildOrContext (D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:787:5)
at D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:2197:68
at new Promise (<anonymous>)
at Object.context (D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:2197:27)
at Object.context (D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:2037:58)
at prepareEsbuildOptimizerRun (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:65419:35)
The plugin "vite:dep-pre-bundle" was triggered by this import
node_modules/date-fns-tz/esm/toDate/index.js:1:22:
1 β import toInteger from 'date-fns/_lib/toInteger/index.js'
β΅ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
X [ERROR] Missing "./format/index.js" specifier in "date-fns" package [plugin vite:dep-pre-bundle]
node_modules/vite/node_modules/esbuild/lib/main.js:1374:21:
1374 β let result = await callback({
β΅ ^
at e (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:21914:25)
at n (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:21914:627)
at o (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:21914:1297)
at resolveExportsOrImports (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:29473:20)
at resolveDeepImport (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:29492:31)
at tryNodeResolve (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:29217:20)
at Context.resolveId (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:28985:28)
at Object.resolveId (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:63629:64)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:67637:21
at async file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:41080:34
at async requestCallbacks.on-resolve (D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:1374:22)
at async handleRequest (D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:731:11)
This error came from the "onResolve" callback registered here:
node_modules/vite/node_modules/esbuild/lib/main.js:1293:20:
1293 β let promise = setup({
β΅ ^
at setup (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:41060:19)
at handlePlugins (D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:1293:21)
at buildOrContextImpl (D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:979:5)
at Object.buildOrContext (D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:787:5)
at D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:2197:68
at new Promise (<anonymous>)
at Object.context (D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:2197:27)
at Object.context (D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:2037:58)
at prepareEsbuildOptimizerRun (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:65419:35)
The plugin "vite:dep-pre-bundle" was triggered by this import
node_modules/date-fns-tz/esm/format/index.js:1:26:
1 β import dateFnsFormat from 'date-fns/format/index.js'
β΅ ~~~~~~~~~~~~~~~~~~~~~~~~~~
X [ERROR] Missing "./_lib/getTimezoneOffsetInMilliseconds/index.js" specifier in "date-fns" package [plugin vite:dep-pre-bundle]
node_modules/vite/node_modules/esbuild/lib/main.js:1374:21:
1374 β let result = await callback({
β΅ ^
at e (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:21914:25)
at n (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:21914:627)
at o (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:21914:1297)
at resolveExportsOrImports (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:29473:20)
at resolveDeepImport (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:29492:31)
at tryNodeResolve (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:29217:20)
at Context.resolveId (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:28985:28)
at Object.resolveId (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:63629:64)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:67637:21
at async file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:41080:34
at async requestCallbacks.on-resolve (D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:1374:22)
at async handleRequest (D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:731:11)
This error came from the "onResolve" callback registered here:
node_modules/vite/node_modules/esbuild/lib/main.js:1293:20:
1293 β let promise = setup({
β΅ ^
at setup (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:41060:19)
at handlePlugins (D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:1293:21)
at buildOrContextImpl (D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:979:5)
at Object.buildOrContext (D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:787:5)
at D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:2197:68
at new Promise (<anonymous>)
at Object.context (D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:2197:27)
at Object.context (D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:2037:58)
at prepareEsbuildOptimizerRun (file:///D:/WORK/frontend/node_modules/vite/dist/node/chunks/dep-R0I0XnyH.js:65419:35)
The plugin "vite:dep-pre-bundle" was triggered by this import
node_modules/date-fns-tz/esm/toDate/index.js:2:44:
2 β import getTimezoneOffsetInMilliseconds from 'date-fns/_lib/getTimezoneOffsetInMilliseconds/index.js'
β΅ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:1650
let error = new Error(text);
^
Error: Build failed with 5 errors:
node_modules/vite/node_modules/esbuild/lib/main.js:1374:21: ERROR: [plugin: vite:dep-pre-bundle] Missing "./_lib/cloneObject/index.js" specifier in "date-fns" package
node_modules/vite/node_modules/esbuild/lib/main.js:1374:21: ERROR: [plugin: vite:dep-pre-bundle] Missing "./_lib/cloneObject/index.js" specifier in "date-fns" package
node_modules/vite/node_modules/esbuild/lib/main.js:1374:21: ERROR: [plugin: vite:dep-pre-bundle] Missing "./_lib/getTimezoneOffsetInMilliseconds/index.js" specifier in "date-fns" package
node_modules/vite/node_modules/esbuild/lib/main.js:1374:21: ERROR: [plugin: vite:dep-pre-bundle] Missing "./_lib/toInteger/index.js" specifier in "date-fns" package
node_modules/vite/node_modules/esbuild/lib/main.js:1374:21: ERROR: [plugin: vite:dep-pre-bundle] Missing "./format/index.js" specifier in "date-fns" package
at failureErrorWithLog (D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:1650:15)
at D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:1059:25
at D:\WORK\frontend\node_modules\vite\node_modules\esbuild\lib\main.js:1526:9
at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
errors: [Getter/Setter],
warnings: [Getter/Setter]
}
Node.js v20.9.0
Process finished with exit code 1
from date-fns-tz.
I believe it has been automatically closed when #267 has been merged. I also think it should be reopened, because even if #267 is a good step to help mark the package as compatible with date-fns@2 only, it doesn't solve the initial issue of it not being compatible with date-fns@3
#265 is the one that will fix this issue when it's merged
from date-fns-tz.
I created a PR to update date-fns to v3. Right now some tests are failing due to a webpack loader missing. Any help is much appreciated!
from date-fns-tz.
This has been a help! Just a note going back a version caused errors in my code which I had to fix, nothing too major.
I uninstalled date-fns and date-fns-tz:
npm uninstall date-fns date-fns-tz
I reinstalled both at v2:
npm i date-fns@2 date-fns-tz@2
from date-fns-tz.
Hi, if anyone needs workaround until there is a newer version of date-fns-tz
, the workaround is to add v2 explicitly to your root package.json
"date-fns": "2.30.0",
The problem is caused by date-fns-tz
having defined peer dependency with >=
which automatically bumps even the major version (which happened 2 weeks ago when 3.0.0. was released)
"node_modules/date-fns-tz": {
"version": "2.0.0",
...
"peerDependencies": {
"date-fns": ">=2.0.0"
}
},
from date-fns-tz.
I am adding my support for this PR (#267) to be merged and released. It would be massively helpful to mark this package v2 to only install the proper date-fns
v2 versions.
I understand it's not making it compatible, but at least it makes it easy to continue to depend on v2 of all the things. And then, with time, date-fns-tz
can be made compatible with date-fns
v3.
from date-fns-tz.
The move from date-fns@2
to date-fns@3
has introduced π₯ breaking changes π₯. Which is why the authors identified the breaking/major version change and accompanying release notes.
date-fns-tz@2
out of the box is not able to work withdate-fns@3
due to these breaking changes.
For those affected and use date-fns-tz@2
the best solution for you right now is to downgrade to date-fns@2
.
- This would be the suggested workaround.
Then at a later date when date-fns-tz
has been updated to be compatible and work with date-fns@3
β that would be the time to upgrade both together.
--
Sharing a bit more about semantic versioning π if it is helpful to anyone.
In the case for date-fns@3
the x in the x.y.z
version format is the identifier. This symbolizes to users of the package and other packages that rely on/ work with it that before you make this update β you may have some work to do. Whereas the y or z in the x.y.z
version may mean (but not always) that you do not.
from date-fns-tz.
Sweet @christopherklint97 ! I shared some findings on the upgrade path as I saw it earlier in the thread if it is helpful, and will try and pull down your code and assist in review later today:
I did publish a stop-gap (for myself) at:
Since it did a lot more than just the minimal upgrade did not think it was in a state to do a PR here without understanding the desired path forward for the library. But may be of short-term use for some folks.
from date-fns-tz.
Here is a list of breaking changes https://github.com/date-fns/date-fns/releases/tag/v3.0.0
from date-fns-tz.
It would probably be good to release v2.0.1 of this that caps the date-fns dependency to
^2
for all the automated systems that keep wanting to upgrade it currently like dependabot
This would be very helpful to those that don't know how to fix this!
from date-fns-tz.
I am also facing the same issue and I have used this temporary solution for now. This is working!!!
Hello π
If like me you need the last
date-fns
version anddate-fns-tz
, there is a temporary solution.You need
patch-package
(https://www.npmjs.com/package/patch-package). Follow their instructions but in short:
- add
"postinstall": "patch-package"
in yourpackage.json
scripts
- edit
node_modules/date-fns-tz/package.json
and change its"date-fns"
peerDependencies
to"2.x"
- run
npx patch-package date-fns-tz
At this point you should have a
patches/date-fns-tz+2.0.0.patch
file created:diff --git a/node_modules/date-fns-tz/package.json b/node_modules/date-fns-tz/package.json index 034e083..7576fc6 100644 --- a/node_modules/date-fns-tz/package.json +++ b/node_modules/date-fns-tz/package.json @@ -120,7 +120,7 @@ ] }, "peerDependencies": { - "date-fns": ">=2.0.0" + "date-fns": "2.x" }, "devDependencies": { "@babel/cli": "^7.15.4",Now, install
date-fns
again withnpm i date-fns-v3@npm:date-fns date-fns@npm:date-fns@2
. You'll have 2 packages:
date-fns-v3
(to use in your code) =>import { isBefore, isEqual } from "date-fns-v3"
- The 'old'
date-fns
(v2) fordate-fns-tz
Remove your
package-lock.json
andnode_modules
and re-install (to have a fresh node_modules).
from date-fns-tz.
@marnusw there are some errors when using date-fns v3 and
formatInTimeZone
function from date-fns-tz
import formatInTimeZone from 'date-fns-tz/formatInTimeZone';
./node_modules/date-fns-tz/esm/formatInTimeZone/index.js:1:0-61 - Error: Module not found: Error: Package path ./_lib/cloneObject/index.js is not exported from package C:\Git\projects\fiyu\frontend\node_modules\date-fns (see exports field in C:\Git\projects\fiyu\frontend\node_modules\date-fns\package.json) ./node_modules/date-fns-tz/esm/format/index.js:1:0-53 - Error: Module not found: Error: Package path ./format/index.js is not exported from package C:\Git\projects\fiyu\frontend\node_modules\date-fns (see exports field in C:\Git\projects\fiyu\frontend\node_modules\date-fns\package.json) ./node_modules/date-fns-tz/esm/toDate/index.js:1:0-57 - Error: Module not found: Error: Package path ./_lib/toInteger/index.js is not exported from package C:\Git\projects\fiyu\frontend\node_modules\date-fns (see exports field in C:\Git\projects\fiyu\frontend\node_modules\date-fns\package.json) ./node_modules/date-fns-tz/esm/toDate/index.js:2:0-101 - Error: Module not found: Error: Package path ./_lib/getTimezoneOffsetInMilliseconds/index.js is not exported from package C:\Git\projects\fiyu\frontend\node_modules\date-fns (see exports field in C:\Git\projects\fiyu\frontend\node_modules\date-fns\package.json)
Yes, that's related to date-fns changing their exports. They got rid of all default exports and now you have to refactor the imports like this:
// Old
import format from 'date-fns/format'
// New
import { format } from 'date-fns/format'
So besides that I hope there aren't other breaking changes that affect date-fns-tz
from date-fns-tz.
Remove your
package.json
andnode_modules
and re-install (to have a fresh node_modules).
I believe you mean package-lock.json
?
from date-fns-tz.
Hello π
If like me you need the last date-fns
version and date-fns-tz
, there is a temporary solution.
You need patch-package
(https://www.npmjs.com/package/patch-package).
Follow their instructions but in short:
- add
"postinstall": "patch-package"
in yourpackage.json
scripts
- edit
node_modules/date-fns-tz/package.json
and change its"date-fns"
peerDependencies
to"2.x"
- run
npx patch-package date-fns-tz
At this point you should have a patches/date-fns-tz+2.0.0.patch
file created:
diff --git a/node_modules/date-fns-tz/package.json b/node_modules/date-fns-tz/package.json
index 034e083..7576fc6 100644
--- a/node_modules/date-fns-tz/package.json
+++ b/node_modules/date-fns-tz/package.json
@@ -120,7 +120,7 @@
]
},
"peerDependencies": {
- "date-fns": ">=2.0.0"
+ "date-fns": "2.x"
},
"devDependencies": {
"@babel/cli": "^7.15.4",
Now, install date-fns
again with npm i date-fns-v3@npm:date-fns date-fns@npm:date-fns@2
.
You'll have 2 packages:
date-fns-v3
(to use in your code) =>import { isBefore, isEqual } from "date-fns-v3"
- The 'old'
date-fns
(v2) fordate-fns-tz
Remove your package-lock.json
and node_modules
and re-install (to have a fresh node_modules).
from date-fns-tz.
This library doesn't really work with date-fns 3 anymore. If you try to follow the documentation, you just get this:
./node_modules/date-fns-tz/esm/format/index.js:1:0
Module not found: Package path ./format/index.js is not exported from package /Users/ataxali/dev/jollof/node_modules/date-fns (see exports field in /Users/ataxali/dev/jollof/node_modules/date-fns/package.json)
https://nextjs.org/docs/messages/module-not-found
Import trace for requested module:
./node_modules/date-fns-tz/esm/index.js
./src/components/partial/Header/Desktop/TravelDeals/index.tsx
./src/components/partial/Nav/index.tsx
./src/components/partial/index.ts
./src/components/layouts/layout.tsx
./src/pages/_app.tsx
trying to just install "date-fns": "^3.0.1",
"date-fns-tz": "^2.0.0",
from date-fns-tz.
Edited
Synopsis of what may need to be addressed (Release Notes):
- Moved to named exports instead of default
Account for functions that are no longer exported fromdate-fns@3
that were indate-fns@2
assign
cloneObject
toInteger
convertToFp
(part of build process)
- If move
cloneObject
tolodash/cloneDeep
(or preferablylodash.clonedeep
and ship with) and pass an empty object fallback this should suffice - Instead of
toInteger
make itNumber()
and should be good (hat-tip @christopherklint97 ) convertToFp
does look to be part of it after all (no types are exported fromdate-fns
though understandably)
Other things to think about due to date-fns@3
:
- Changed how they do ESM where they now serve CommonJS/ESM via
js|mjs
constants
is now its own importdate-fns/constants
- Focused on TypeScript checking to deal with function scenarios
- Reduced testing, and enables functions to be simplified / slimmed
- And of course ... a lot more heh.
Found this out by trying to see if I could help migrate/upgrade date-fns-tz
and it looks to be a bit more than cosmetic effort, but that all depends on what is needed.
@tuukkasp pointed out a good point that perhaps a [email protected]
release could update peerDependencies
:
- reference: #260 (comment)
It would probably be good to release v2.0.1 of this that caps the date-fns dependency to ^2 for all the automated systems that keep wanting to upgrade it currently like dependabot
The stepped efforts I've done can be walked through here:
This combines some stepped approaches with a breakdown into one into a scoped short-term package:
@jeromefitz/date-fns-tz
, whose intent is to be a testing stop-gap only.
Obviously this made some decisions, but trying to look through the code it looked to mimic a lot of the original decision to base off of date-fns
. And due to their v3
change perhaps this would be the eventual intention.
Giant PRs like this are difficult (at best) to sift through, so if anything like this wants to be considered for date-fns-tz
can look at how to "rework" the steps into bite-sized PR chunks a bit better, especially with lessons learned.
As of this edit though I will not have time until next week at the earliest it looks like.
from date-fns-tz.
is there any workaround to make it work at this point?
from date-fns-tz.
Also used patch-package as mentioned here, but I went a step further and got things working with date-fns v3 (specifically 3.2.0) for my project. Use at your own risk, but here are the patch files I'm using:
patches/date-fns+3.2.0.patch
diff --git a/node_modules/date-fns/package.json b/node_modules/date-fns/package.json
index 3493e27..b8406b5 100644
--- a/node_modules/date-fns/package.json
+++ b/node_modules/date-fns/package.json
@@ -48,6 +48,16 @@
"default": "./locale.mjs"
}
},
+ "./_lib/getTimezoneOffsetInMilliseconds": {
+ "require": {
+ "types": "./_lib/getTimezoneOffsetInMilliseconds.d.ts",
+ "default": "./_lib/getTimezoneOffsetInMilliseconds.js"
+ },
+ "import": {
+ "types": "./_lib/getTimezoneOffsetInMilliseconds.d.mts",
+ "default": "./_lib/getTimezoneOffsetInMilliseconds.mjs"
+ }
+ },
"./fp": {
"require": {
"types": "./fp.d.ts",
patches/date-fns-tz+2.0.0.patch
diff --git a/node_modules/date-fns-tz/_lib/toInteger/index.js b/node_modules/date-fns-tz/_lib/toInteger/index.js
new file mode 100644
index 0000000..dcceb65
--- /dev/null
+++ b/node_modules/date-fns-tz/_lib/toInteger/index.js
@@ -0,0 +1,27 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = toInteger;
+
+function toInteger(
+ dirtyNumber
+ ) {
+ if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {
+ return NaN;
+ }
+
+ const number = Number(dirtyNumber)
+
+ if (isNaN(number)) {
+ return number;
+ }
+
+ return (number < 0
+ ? Math.ceil(number)
+ : Math.floor(number));
+ }
+
+
+module.exports = exports.default;
diff --git a/node_modules/date-fns-tz/esm/_lib/toInteger/index.js b/node_modules/date-fns-tz/esm/_lib/toInteger/index.js
new file mode 100644
index 0000000..38cb148
--- /dev/null
+++ b/node_modules/date-fns-tz/esm/_lib/toInteger/index.js
@@ -0,0 +1,17 @@
+export default function toInteger(
+ dirtyNumber
+ ) {
+ if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {
+ return NaN;
+ }
+
+ const number = Number(dirtyNumber)
+
+ if (isNaN(number)) {
+ return number;
+ }
+
+ return (number < 0
+ ? Math.ceil(number)
+ : Math.floor(number));
+ }
diff --git a/node_modules/date-fns-tz/esm/formatInTimeZone/index.js b/node_modules/date-fns-tz/esm/formatInTimeZone/index.js
index bbb2c4e..b29229a 100644
--- a/node_modules/date-fns-tz/esm/formatInTimeZone/index.js
+++ b/node_modules/date-fns-tz/esm/formatInTimeZone/index.js
@@ -1,4 +1,3 @@
-import cloneObject from 'date-fns/_lib/cloneObject/index.js'
import format from '../format/index.js'
import utcToZonedTime from '../utcToZonedTime/index.js'
@@ -25,7 +24,7 @@ import utcToZonedTime from '../utcToZonedTime/index.js'
* @returns {String} the formatted date string
*/
export default function formatInTimeZone(date, timeZone, formatStr, options) {
- var extendedOptions = cloneObject(options)
+ var extendedOptions = {...options};
extendedOptions.timeZone = timeZone
return format(utcToZonedTime(date, timeZone), formatStr, extendedOptions)
}
diff --git a/node_modules/date-fns-tz/esm/toDate/index.js b/node_modules/date-fns-tz/esm/toDate/index.js
index 6acea0e..8cc6529 100644
--- a/node_modules/date-fns-tz/esm/toDate/index.js
+++ b/node_modules/date-fns-tz/esm/toDate/index.js
@@ -1,5 +1,5 @@
-import toInteger from 'date-fns/_lib/toInteger/index.js'
-import getTimezoneOffsetInMilliseconds from 'date-fns/_lib/getTimezoneOffsetInMilliseconds/index.js'
+import toInteger from '../_lib/toInteger/index.js'
+import getTimezoneOffsetInMilliseconds from 'date-fns/_lib/getTimezoneOffsetInMilliseconds.js'
import tzParseTimezone from '../_lib/tzParseTimezone/index.js'
import tzPattern from '../_lib/tzPattern/index.js'
diff --git a/node_modules/date-fns-tz/esm/zonedTimeToUtc/index.js b/node_modules/date-fns-tz/esm/zonedTimeToUtc/index.js
index 4451b67..f343aa5 100644
--- a/node_modules/date-fns-tz/esm/zonedTimeToUtc/index.js
+++ b/node_modules/date-fns-tz/esm/zonedTimeToUtc/index.js
@@ -1,4 +1,3 @@
-import cloneObject from 'date-fns/_lib/cloneObject/index.js'
import toDate from '../toDate/index.js'
import tzPattern from '../_lib/tzPattern/index.js'
import tzParseTimezone from '../_lib/tzParseTimezone/index.js'
@@ -30,7 +29,7 @@ import newDateUTC from '../_lib/newDateUTC/index.js'
*/
export default function zonedTimeToUtc(date, timeZone, options) {
if (typeof date === 'string' && !date.match(tzPattern)) {
- var extendedOptions = cloneObject(options)
+ var extendedOptions = {...options}
extendedOptions.timeZone = timeZone
return toDate(date, extendedOptions)
}
diff --git a/node_modules/date-fns-tz/format/index.js b/node_modules/date-fns-tz/format/index.js
index 0ffeff8..b7ba182 100644
--- a/node_modules/date-fns-tz/format/index.js
+++ b/node_modules/date-fns-tz/format/index.js
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
});
exports.default = format;
-var _index = _interopRequireDefault(require("date-fns/format/index.js"));
+var _index = _interopRequireDefault(require("date-fns"));
var _index2 = _interopRequireDefault(require("./formatters/index.js"));
@@ -348,7 +348,7 @@ function format(dirtyDate, dirtyFormatStr, dirtyOptions) {
}, formatStr);
}
- return (0, _index.default)(dirtyDate, formatStr, options);
+ return _index.default.format(dirtyDate, formatStr, options);
}
module.exports = exports.default;
diff --git a/node_modules/date-fns-tz/formatInTimeZone/index.js b/node_modules/date-fns-tz/formatInTimeZone/index.js
index ca93886..4429029 100644
--- a/node_modules/date-fns-tz/formatInTimeZone/index.js
+++ b/node_modules/date-fns-tz/formatInTimeZone/index.js
@@ -5,8 +5,6 @@ Object.defineProperty(exports, "__esModule", {
});
exports.default = formatInTimeZone;
-var _index = _interopRequireDefault(require("date-fns/_lib/cloneObject/index.js"));
-
var _index2 = _interopRequireDefault(require("../format/index.js"));
var _index3 = _interopRequireDefault(require("../utcToZonedTime/index.js"));
@@ -36,7 +34,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
* @returns {String} the formatted date string
*/
function formatInTimeZone(date, timeZone, formatStr, options) {
- var extendedOptions = (0, _index.default)(options);
+ var extendedOptions = {...options};
extendedOptions.timeZone = timeZone;
return (0, _index2.default)((0, _index3.default)(date, timeZone), formatStr, extendedOptions);
}
diff --git a/node_modules/date-fns-tz/toDate/index.js b/node_modules/date-fns-tz/toDate/index.js
index 6c1aaaa..4eaeaaa 100644
--- a/node_modules/date-fns-tz/toDate/index.js
+++ b/node_modules/date-fns-tz/toDate/index.js
@@ -5,9 +5,9 @@ Object.defineProperty(exports, "__esModule", {
});
exports.default = toDate;
-var _index = _interopRequireDefault(require("date-fns/_lib/toInteger/index.js"));
+var _index = _interopRequireDefault(require("../_lib/toInteger/index.js"));
-var _index2 = _interopRequireDefault(require("date-fns/_lib/getTimezoneOffsetInMilliseconds/index.js"));
+var _index2 = _interopRequireDefault(require("date-fns/_lib/getTimezoneOffsetInMilliseconds"));
var _index3 = _interopRequireDefault(require("../_lib/tzParseTimezone/index.js"));
diff --git a/node_modules/date-fns-tz/zonedTimeToUtc/index.js b/node_modules/date-fns-tz/zonedTimeToUtc/index.js
index 3739d26..3d6535e 100644
--- a/node_modules/date-fns-tz/zonedTimeToUtc/index.js
+++ b/node_modules/date-fns-tz/zonedTimeToUtc/index.js
@@ -5,8 +5,6 @@ Object.defineProperty(exports, "__esModule", {
});
exports.default = zonedTimeToUtc;
-var _index = _interopRequireDefault(require("date-fns/_lib/cloneObject/index.js"));
-
var _index2 = _interopRequireDefault(require("../toDate/index.js"));
var _index3 = _interopRequireDefault(require("../_lib/tzPattern/index.js"));
@@ -43,7 +41,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
*/
function zonedTimeToUtc(date, timeZone, options) {
if (typeof date === 'string' && !date.match(_index3.default)) {
- var extendedOptions = (0, _index.default)(options);
+ var extendedOptions = {...options};
extendedOptions.timeZone = timeZone;
return (0, _index2.default)(date, extendedOptions);
}
from date-fns-tz.
Hey @woothu, I haven't had time to look into date-fns v3 yet. What is it that makes it incompatible? Were there significant changes to the core functions, or is it just a matter of updating this lib's dependencies?
from date-fns-tz.
@StefanNedelchev already refactored imports for date-fns to new format, those errors i posted are after refactor
from date-fns-tz.
@StefanNedelchev already refactored imports for date-fns to new format, those errors i posted are after refactor
Not you - the author of date-fns-tz. The library itself needs to address these changes too
from date-fns-tz.
I added an override to my package.json
instead:
{
"name": "your-project-name",
...
"overrides": {
"date-fns": "^2.0.0"
}
}
After adding it, run npm install
. Check if it's working with: npm ls date-fns
. You should see:
[email protected] /home/user/your-project-repo-dir
βββ¬ [email protected]
βββ [email protected] overridden
from date-fns-tz.
@marnusw Can you please merge this approved PR to fix the dependency issue in V2 until V3 is released? #267
Myself and many others are suffering a great amount of headaches from this issue, this tiny PR simply corrects the date-fns
version range to not allow V3 which would fix this issue completely for V2 users.
from date-fns-tz.
this tiny PR simply corrects the
date-fns
version range to not allow V3 which would fix this issue completely.
No this is not correct. The PR you posted will not allow date-fns v3 to be used by date-fns-tz v2 but it wont fix this issue of using date-fns v3 with date-fns-tz
from date-fns-tz.
No this is not correct. The PR you posted will not allow date-fns v3 to be used by date-fns-tz v2 but it wont fix this issue of using date-fns v3 with date-fns-tz
It means the date-fns-tz V2 will be using date-fns V2, which it is compatible with. You are correct that it will not make it compatible with V3. The example scenario this fixes is in that PR's description.
I edited my previous message for clarity to say for V2 users specifically.
from date-fns-tz.
I am a bit confused by what's available or not. I came across date-fns-tz-v3 and hoped that it would address the issues mentioned here.
But it didn't. I still had an import issue:
Package subpath './format/index.js' is not defined by "exports" in [my_path]/node_modules/date-fns/package.json imported from [my_path]/node_modules/date-fns-tz/esm/format/index.js
Is this package meant to be a port compatible with date-fns v3?
from date-fns-tz.
Related Issues (20)
- Unexpected behavior zonedTimeToUtc HOT 1
- RangeError: Invalid time zone specified: "UTC"
- How to format date in (2023-08-01T05:10:45+0000) format ? HOT 1
- zonedTimeToUtc with GMT+1 generates Date{NaN}
- Intl Android Support HOT 4
- `utcToZonedTime` should not be doing any conversion when `"UTC"` is passed in as the time zone HOT 1
- `utcToZonedTime` outputs a date in locale time
- formatInTimeZone considers DTS even on UTC when the env TZ has DTS HOT 1
- Not sure how to reason about this library when the underlying Unix timestamp gets modified
- Wrong parsed date with time at 24:00:00
- getTimezoneOffset for UTC+[X] does not work
- When input not ISO8601 time string like 2023/11/11 to toDate will return wrong date
- `formatInTimeZone(d, tz)` shows the wrong time for one hour if the system zone has DST, even though `tz` doesnβt
- Set default timezone HOT 2
- Only named exports may use 'export type' HOT 4
- `RangeError: Invalid time zone specified:` error caused by usage of `formatInTimeZone` function for some folks HOT 7
- Upgrade from date-fns 2.30 to 3.0.6: Cannot find module 'date-fns/format/index.js' from 'node_modules/date-fns-tz/format/index.js' HOT 5
- Unable to resolve path to module 'date-fns-tz' HOT 11
- Improve Documentation HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. πππ
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from date-fns-tz.