Błąd pisania TS2304: nie można znaleźć nazwy "wymagaj"
Próbuję dostać mój pierwszy Typopis i DefinitelyTyped Node.aplikacja js uruchomiona i napotkana na pewne błędy.
Otrzymuję błąd "TS2304: Cannot find name 'require '" podczas próby transpilowania prostego węzła maszynopisu.strona js. Przeczytałem kilka innych wystąpień tego błędu na przepełnienie stosu i nie sądzę, że mam podobne problemy. Uruchamiam w powłoce polecenie:
tsc movie.server.model.ts.
Zawartość tego pliku są:
'use strict';
/// <reference path="typings/tsd.d.ts" />
/* movie.server.model.ts - definition of movie schema */
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var foo = 'test';
Błąd jest wyrzucany na linię var mongoose=require('mongoose')
.
Zawartość typowań / tsd.plik d. ts to:
/// <reference path="node/node.d.ts" />
/// <reference path="requirejs/require.d.ts" />
The .d. ts odniesienia do pliku zostały umieszczone w odpowiednich folderach i dodane do typings / tsd.d. ts przez polecenia:
tsd install node --save
tsd install require --save
The produced .plik js wydaje się działać dobrze, więc mogę zignorować błąd. Ale byłbym wdzięczny wiedząc, dlaczego ten błąd występuje i co robię źle.
23 answers
Szybko i brudno
Jeśli masz tylko jeden plik używając require, lub robisz to dla celów demonstracyjnych, możesz zdefiniować require na górze pliku maszynopisu.
declare var require: any
Maszynopis 2.x
Jeśli używasz maszynopisu 2.x nie musisz już instalować wpisów ani na pewno wpisów. Wystarczy zainstalować następujący pakiet.
npm install @types/node --save-dev
Przyszłość plików deklaracji(6/15/2016)
Narzędzia takie jak typowanie i tsd będą nadal działać, i będziemy pracować wraz z tymi społecznościami, aby zapewnić płynne przejście.
Zweryfikuj lub Edytuj swój src / tsconfig.app.json tak, że zawiera:
...
"types": [ "node" ],
"typeRoots": [ "../node_modules/@types" ]
...
Upewnij się, że plik znajduje się w folderze src, a nie w folderze aplikacji głównej.
Domyślnie, każdy pakiet pod @types jest już zawarty w Twojej kompilacji , chyba że podałeś jedną z tych opcji. Czytaj więcej
Maszynopis 1.x
Używając typowań (DefinitelyTyped ' s replacement) możesz określić definicję bezpośrednio z repozytorium GitHub.
Typowanie instalacji
npm install typings -g --save-dev
Zainstaluj definicję typu requireJS z DefinitelyType repo
typings install dt~node --save --global
Webpack
Jeśli używasz Webpack jako narzędzia do budowania, możesz dołączyć typy Webpack.
npm install --save-dev @types/webpack-env
Zaktualizuj swoje tsconfig.json
z następującym Pod compilerOptions
:
"types": [
"webpack-env"
]
Pozwala to na wykonywanie require.ensure
i innych specyficznych dla Webpacka funkcje.
Kątowe CLI
Z CLI możesz wykonać krok Webpack powyżej i dodać blok "typy" do swojego tsconfig.app.json
.
Alternatywnie możesz użyć preinstalowanych typów node
. Pamiętaj, że będzie to zawierać dodatkowe typy kodu po stronie klienta, które nie są naprawdę dostępne.
"compilerOptions": {
// other options
"types": [
"node"
]
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-10-12 13:21:02
Dla Maszynopisu 2.x , są teraz dwa kroki:
-
Zainstalować pakiet, który definiuje
require
. Na przykład:npm install @types/node --save-dev
-
Powiedz Typescriptowi, aby uwzględnił go globalnie w
tsconfig.json
:{ "compilerOptions": { "types": ["node"] } }
Drugi krok jest ważny tylko wtedy, gdy potrzebujesz dostępu do globalnie dostępnych funkcji, takich jak require
. W przypadku większości pakietów należy użyć wzoru import package from 'package'
. Nie ma potrzeby dołączania każdego pakietu do tsconfig.tablica typów json powyżej.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-09 00:57:54
Możesz
declare var require: any
Lub, dla bardziej kompleksowego wsparcia, użyj definitelytyped ' s require.d. ts
Również zamiast var mongoose = require('mongoose')
, możesz spróbować następujących
import mongoose from 'mongoose' // or
import mongoose = require('mongoose')
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-18 22:50:49
W moim przypadku był to bardzo głupi problem, gdzie src/tsconfig.app.json
było nadpisywanie ustawienia tsconfig.json
.
Więc miałem to w tsconfig.json
:
"types": [
"node"
]
I ten w src/tsconfig.app.json
:
"types": []
Mam nadzieję, że ktoś uzna to za pomocne, ponieważ ten błąd powodował mi siwe włosy.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-09-15 17:57:15
Ta odpowiedź odnosi się do nowoczesnych ustawień (TypeScript 2.x, Webpack > 2.x)
You don ' t need to install @types/node (which is all of Node).js typuje i jest nieistotny dla kodu front-end, w rzeczywistości komplikuje rzeczy takie jak setTimout różne wartości zwracane itp..
You do need to install @types/webpack-env
npm i -D @types/webpack-env
Który daje podpisy runtime, które posiada Webpack (w tym require
, require.ensure
, itd.)
Również zrobić pewnie, że Twój tsconfig.plik json nie ma ustawionej tablicy' types' ->, która spowoduje, że pobierze wszystkie definicje typów w folderze node_modules/@types.
Jeśli chcesz ograniczyć wyszukiwanie typów, możesz ustawić właściwość typeRoot na node_modules / @types.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-10-21 23:38:39
Zamiast:
'use strict';
/// <reference path="typings/tsd.d.ts" />
Try:
/// <reference path="typings/tsd.d.ts" />
'use strict';
Tzn. pierwsza ścieżka odniesienia.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-14 21:18:46
W celach informacyjnych używam Angular 7.1.4, TypeScript 3.1.6 , a jedyne co muszę zrobić to dodać ten wiersz w tsconfig.json
:
"types": ["node"], // within compilerOptions
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-10-21 23:43:14
Znalazłem rozwiązanie polegające na użyciu polecenia TSD:
tsd install node --save
, który dodaje/aktualizuje plik typings/tsd.d.ts
i ten plik zawiera wszystkie definicje typów, które są wymagane dla aplikacji węzła.
Na górze mojego pliku umieszczam odniesienie do tsd.d.ts
w następujący sposób:
/// <reference path="../typings/tsd.d.ts" />
Wymóg jest zdefiniowany w ten sposób od stycznia 2016 roku:
declare var require: NodeRequire;
interface NodeModule {
exports: any;
require: NodeRequireFunction;
id: string;
filename: string;
loaded: boolean;
parent: any;
children: any[];
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-13 20:32:00
Wziąłem odpowiedź Petera Vargi , aby dodać declare var require: any;
i przekształciłem ją w ogólne rozwiązanie, które działa dla wszystkich .pliki ts generowane przy użyciu preprocess-loader :
-
Zainstaluj preprocessor-loader:
npm install preprocessor-loader
Dodaj loader do swojego webpacka.config.js (używam ts-loader do przetwarzania źródeł maszynopisu):
module: {
loaders: [{
test: /\.tsx?$/,
loader: 'ts-loader!preprocessor?file&config=preprocess-ts.json'
}]
}
- Dodaj konfigurację, która doda obejście do każdego źródło:
{
"line": false,
"file": true,
"callbacks": [{
"fileName": "all",
"scope": "source",
"callback": "(function shimRequire(source, fileName) { return 'declare var require: any;' + source; })"
}]
}
Możesz dodać bardziej wytrzymałe wymagają.d. ts w ten sam sposób, ale declare var require: any;
wystarczyło w mojej sytuacji.
Uwaga, jest błąd w preprocesorze 1.0.5, który odcina ostatnią linię, więc upewnij się, że na końcu masz dodatkową przestrzeń linii i wszystko będzie dobrze.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:26:32
Dla mnie jest to rozwiązane przez dodanie typów do opcji kompilatora kątowego.
"angularCompilerOptions": {
"fullTemplateTypeCheck": true,
"strictInjectionParameters": true,
"types": [ "node" ]
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-03-20 05:57:00
Ja również zmagałem się z tym problemem. Wierzę, że to działa dla wszystkich release candidates aka RC , ale nie testowałem go. For @ angular rc.2 to działa dobrze.
- Dodaj
core-js
jako zależność npm wpackage.json
- run
typings install core-js --save
- usuń wszystkie
"es6-shim"
występujące w twoimpackage.json
. Już jej nie potrzebujesz.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-21 12:26:31
Upewnij się, że masz zainstalowany npm i @types/node
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-24 20:41:45
Kiedyś brakowało "jasmine" z tsconfig.json może spowodować ten błąd. (maszynopis 2.X)
Więc dodaj
"types": [
"node",
"jasmine"
]
Do twojego tsconfig.json
Pliku.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-10-21 23:36:25
Elektron + kątowy 2/4 addycja:
Poza dodaniem typu 'node' do ts.config różnych plików, co w końcu zadziałało dla mnie było dodanie obok
typings.d.ts
Plik:
declare var window: Window;
interface Window {
process: any;
require: any;
}
Zauważ, że mój przypadek rozwija się z elektronem + kątowym 2/4. Potrzebowałem wymagania w oknie global.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-10-21 23:38:12
Mam jeszcze jedną odpowiedź, która opiera się na wszystkich poprzednich, które opisują npm install @types/node
i włączają node
w tsconfig.json / compilerOptions / types
.
W moim przypadku mam bazę tsConfig.json
i osobną w aplikacji kątowej, która rozszerza tę:
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"outDir": "../out-tsc/app",
"types": []
},
Moim problemem był pusty types
w tym tsconfi.app.json
- zatacza ten w podstawowej konfiguracji.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-10-21 23:44:27
import * as mongoose from 'mongoose'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-10-13 10:13:12
Czy określiłeś, jakiego modułu użyć do transpilowania kodu?
tsc --target es5 --module commonjs script.ts
Musisz to zrobić, aby transpiler wiedział, że kompilujesz kod NodeJS. Docs .Musisz również zainstalować definicje mongoose
tsd install mongoose --save
Nie używaj
var
do deklarowania zmiennych (chyba że jest to konieczne, co jest bardzo rzadkim przypadkiem), zamiast tego używajlet
. dowiedz się więcej na ten temat
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-19 08:59:57
Oprócz odpowiedzi cgatiana, dla TypeScript 1.x
Jeśli nadal widzisz błędy, prosimy o podanie indeksu.d. ts w opcjach kompilatora.
"files": [
"typings/index.d.ts"
]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-31 00:20:53
Nie mogłem uzyskać błędu "Wymagaj", aby odejść za pomocą żadnej z powyższych sztuczek.
Ale dowiedziałem się, że problem polegał na tym, że moje narzędzia do maszynopisu dla Visual Studio gdzie stara wersja (1.8.6.0) i najnowsza wersja na dzień dzisiejszy jest (2.0.6.0).
Możesz pobrać najnowszą wersję narzędzi z:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-10-21 23:34:30
Jeśli możesz skompilować kod, ale Visual Studio 2015 oznacza funkcje "require" jako błędy z tekstem błędu nie może znaleźć nazwy "require" lub nie może rozwiązać symbolu "require" , Zaktualizuj TypeScript dla Visual Studio 2015 do najnowszej wersji (w tej chwili 2.1.5) i zaktualizuj ReSharper (jeśli go używasz) do co najmniej wersji 2016.3.2.
Miałem ten irytujący problem przez jakiś czas i nie mogłem znaleźć rozwiązania, ale w końcu rozwiązałem go w ten sposób.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-10-21 23:35:33
Dodać w tsconfig.json
:
"typeRoots": [ "../node_modules/@types" ]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-10-21 23:36:35
Jako zatwierdzona odpowiedź nie wspominała o możliwości stworzenia własnego pliku typowań i zaimportowania go tam, dodam go poniżej.
Zakładając, że używasz npm jako menedżera pakietów, możesz:
npm i @types/node --save-dev
Następnie w pliku tsconfig:
Tsconfig.json
"include": ["typings.d.ts"],
Następnie utwórz plik typowania:
Typowania.d. ts
import 'node/globals'
Zrobione, błędów nie ma, miłego pisania:)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-09-20 14:20:53
Jeśli masz do czynienia z tym problemem w .plik ts, który jest tam tylko po to, aby podać jakieś stałe wartości, wtedy możesz po prostu
Zmień nazwę swojego .plik ts do .plik js
I błąd się nie powtórzy.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-10-21 23:42:32