Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 类型脚本/节点意外标记*_Node.js_Typescript_Webpack_Commonjs - Fatal编程技术网

Node.js 类型脚本/节点意外标记*

Node.js 类型脚本/节点意外标记*,node.js,typescript,webpack,commonjs,Node.js,Typescript,Webpack,Commonjs,我正在尝试将我的应用程序节点后端更新为typescript,我一直遇到以下语法错误: /Users/Shared/website/src/server.ts:1 (function (exports, require, module, __filename, __dirname) { import * as express from 'express'; ^ Sy

我正在尝试将我的应用程序节点后端更新为typescript,我一直遇到以下语法错误:

/Users/Shared/website/src/server.ts:1
(function (exports, require, module, __filename, __dirname) { import * 
as express from 'express';
                                                                 ^

SyntaxError: Unexpected token *
我的tsconfig/webpack/server等设置如下:

server.ts

webpack.config.json:

tsconfig.json:

构建过程成功,但我在运行时遇到了syntaxError。我也使用typescript/tsx设置了一个react前端,它工作得很好。我似乎只是遇到了server.ts/node文件的问题。我还不太熟悉如何设置这些,但我想尝试使用多种技术(react/node/typescript/sass/webpack/etc)创建一个网站。到目前为止,除了typescript/节点关系之外,我什么都有。

所以我在github上看到了一篇文章,其中基本上有两种工作方法,因为您使用的是针对es6 add的捆绑工具

“allowSyntheticDefaultImports”:true
“compilerOptions”

或改变

import express from "express";


如果
tsconfig.json
不是项目的根目录,则可能会发生这种情况。将webpack配置为指向目标配置文件(您可以使用变量更改该文件以指向开发和产品配置)

如果设置了,将使用给定的绝对路径作为基本路径来解析TypeScript配置文件。默认情况下,配置文件的目录用作基本路径。解析时,配置文件中的相对路径相对于基本路径进行解析。Option context允许将Option configFile设置为项目根以外的路径(例如NPM包),而ts loader的基本路径可以保留为项目根

尝试修改您的
webpack.config.js
文件以获得以下内容:

module.exports = {
  ...
  module: {
    rules: [
      {
        options: {
          configFile: path.join(__dirname, "tsconfig.json")
        }
      }
    ]
  }
};

我以前也遇到过同样的问题。我通过更改导入“调用”来解决此问题:

发件人:

致:


当我意识到没有应用tsconfig时,我也遇到了同样的问题

如果


实际上,您不会出现此错误。

正如其他人所说,问题是您的tsconfig.json未应用于server.ts。您遗漏了设置的重要细节,这就是其他人无法复制此问题的原因

我对这个问题有一个很好的猜测,并且我自己也在努力解决这个相同的问题,我将在这里解释我的猜测,希望能帮助其他受这个问题折磨的可怜的灵魂

基本问题是服务器代码与react代码位于不同的树中。这就是为什么没有将tsconfig.json应用于它,因为(我相信)它在指定的“/src/”路径之外。(可能是“/website/src/”)

您没有向我们显示package.json文件,但很可能服务器条目类似于“server”:“ts node./website/src/server.ts”

要验证tsconfig.json应用程序是否存在问题,请尝试从命令行执行此操作

$ ts-node -O '{\"module\":\"commonjs\"}' ./website/src/server.ts

很有可能,事情会开始起作用。现在,解决方案可能与添加tsconfig.json包含的另一个路径一样简单。

该链接似乎与我遇到的问题并不完全相关。该帖子中的OP能够从“express”编译“import*as express”;我无法在具有此语法的文件上使用npm run start,这就是我遇到的问题。建议的解决方案对我都不起作用。当我尝试从“express”导入express时;出于某些原因,我点击了“意外标记‘express’”,您发布的tsconfig未应用。如果
“module”:“commonjs”
有效,则不会出现此错误。是什么原因导致未应用此错误?我如何减轻这种情况?可能有另一个tsconfig会覆盖此tsconfig或其他任何内容。此问题特定于您的设置。请提供一种复制问题的方法—回购协议等。请参阅以澄清其工作原理,Node实际上还不支持ES6模块。查看我能够找到的这些链接:,和
import express from "express";
import express = require('express');
module.exports = {
  ...
  module: {
    rules: [
      {
        options: {
          configFile: path.join(__dirname, "tsconfig.json")
        }
      }
    ]
  }
};
import * as express from 'express';
const express = require('express');
"module": "commonjs" 
$ ts-node -O '{\"module\":\"commonjs\"}' ./website/src/server.ts