Nodejs express 3.1 使用时出现 basedir=`dirname "$0"` 错误

Nodejs express 3.1 使用时出现 basedir=dirname "$0" 错误

操作系统是win7,使用npm install express -g 命令安装后,可以看到express信息,但是在启动程序的时候却出现这个问题。详细错误如下:

D:\node\npm-global\express:2 basedir=dirname "$0" ^ SyntaxError: Unexpected token ILLEGAL at Module._compile (module.js:437:25) at Object.Module._extensions…js (module.js:467:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Module.require (module.js:362:17) at require (module.js:378:17) at Object.<anonymous> (E:\js\sinter\app.js:2:15) at Module._compile (module.js:449:26) at Object.Module._extensions…js (module.js:467:10) at Module.load (module.js:356:32)

网上也没找到什么解决方法,请高人指教。


3 回复

Nodejs Express 3.1 使用时出现 basedir=dirname “$0”` 错误

操作系统环境

  • Windows 7

问题描述

在安装了Express框架后(通过命令 npm install express -g),虽然可以成功看到Express的信息,但在启动程序时却遇到了一个语法错误:

D:\node\npm-global\express:2
basedir=`dirname "$0"`
^
SyntaxError: Unexpected token ILLEGAL

解决方案

该问题通常发生在跨平台的脚本中,特别是在Windows环境下执行Linux风格的shell命令时。basedir=dirname “$0”` 这一行是一个典型的Unix/Linux shell语法,而不是Node.js或JavaScript的语法。

解决方案1:手动修改全局安装的Express脚本

你可以尝试手动编辑全局安装的Express脚本文件(如上所示路径中的express文件)来修复这个问题。打开文件并删除或注释掉有问题的行:

# 删除或注释掉这行
# basedir=`dirname "$0"`

# 修改为以下内容
const path = require('path');
const dirname = () => path.dirname(require.main.filename);

解决方案2:使用本地安装的Express

另一种更推荐的方法是使用本地安装的Express,而不是全局安装。本地安装可以避免因全局安装导致的路径和依赖问题。

首先,在你的项目目录中创建一个新的Node.js项目,并安装Express:

mkdir myapp
cd myapp
npm init -y
npm install express --save

然后,创建一个简单的Express应用(例如 app.js):

// app.js
const express = require('express');
const app = express();

app.get('/', function (req, res) {
    res.send('Hello World!');
});

app.listen(3000, () => {
    console.log('App is listening on port 3000.');
});

最后,运行你的应用:

node app.js

通过这种方式,你可以避免全局安装Express带来的问题,并且可以更好地管理项目的依赖关系。

希望这些解决方案能够帮助你解决问题!


第一次使用express,在目录下面使用了 npm install -d 之后就没有出现这个问题了,至于原理自己还得再学学。

根据你的描述,问题出在 D:\node\npm-global\express:2 这一行。从错误信息来看,basedir= 后面的代码 dirname "$0" 在 Node.js 中是非法的。这通常是因为文件格式不正确或脚本文件中包含了 Bash 脚本语法。

解决方法

  1. 删除全局安装的 Express 脚手架: 你可以先卸载已安装的全局 Express 脚手架。

    npm uninstall -g express
    
  2. 安装最新版本的 Express 脚手架: 确保你安装的是正确的 Express 脚手架工具,而不是直接安装的 Express 模块。可以尝试安装 express-generator

    npm install -g express-generator
    
  3. 创建一个新的项目并运行: 创建一个新项目并确保使用的是正确的命令行工具:

    express myapp
    cd myapp
    npm install
    

    然后启动应用:

    npm start
    

示例代码

假设你已经按照上述步骤操作,以下是创建的新项目的目录结构和启动命令:

目录结构

myapp/
├── bin/
│   └── www
├── node_modules/
├── public/
├── routes/
├── views/
├── app.js
├── package.json
└── ...

启动命令

cd myapp
npm start

通过这种方式,你可以避免使用错误的脚本,并且能够正常启动 Express 应用。如果问题依然存在,检查是否其他环境变量或配置文件中也包含类似的非法字符。

回到顶部